diff options
Diffstat (limited to 'ext/pybind11/tests/test_cmake_build/embed.cpp')
-rw-r--r-- | ext/pybind11/tests/test_cmake_build/embed.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/ext/pybind11/tests/test_cmake_build/embed.cpp b/ext/pybind11/tests/test_cmake_build/embed.cpp new file mode 100644 index 000000000..b9581d2fd --- /dev/null +++ b/ext/pybind11/tests/test_cmake_build/embed.cpp @@ -0,0 +1,21 @@ +#include <pybind11/embed.h> +namespace py = pybind11; + +PYBIND11_EMBEDDED_MODULE(test_cmake_build, m) { + m.def("add", [](int i, int j) { return i + j; }); +} + +int main(int argc, char *argv[]) { + if (argc != 2) + throw std::runtime_error("Expected test.py file as the first argument"); + auto test_py_file = argv[1]; + + py::scoped_interpreter guard{}; + + auto m = py::module::import("test_cmake_build"); + if (m.attr("add")(1, 2).cast<int>() != 3) + throw std::runtime_error("embed.cpp failed"); + + py::module::import("sys").attr("argv") = py::make_tuple("test.py", "embed.cpp"); + py::eval_file(test_py_file, py::globals()); +} |