This repository contains the Python proxy plugin for ModOrganizer2. The proxy plugin allow developers to write Python plugins for ModOrganizer2.
This repository is part of MO2 main repositories and should usually be build using
mob.
This repositories contains 5 sub-projects in src.
The interface between Python and C++ is done using the
pybind11 library.
See the README in the subfolder (when there is one) for more details.
src/proxycontains the actual proxy plugin. This project is a simple interface between MO2 and the runner (see below). The CMake code:- generates the
plugin_python.dlllibrary, - generates the translation file (under
src/), - installs necessary files for the plugin (Python DLL, Python libraries, etc),
including
mobase.
- generates the
src/runnercontains the Python runner. This is the project that instantiates a Python interpreter and load/unload Python plugins.src/pybind11-qtcontains many utility stuff to interface pybind11 with Qt and PyQt.src/pybind11-utilscontains some utility stuff pybind11. This project is header-only.src/mobasecontains the Python plugin interface.- This projects generates the
mobasePython library.
- This projects generates the
Some (woefully incomplete) tests are available under tests, split in three
sub-directories:
tests/mockssimply contains mocks ofuibaseinterfaces to be used in the two other test projects.tests/pythoncontains Python tests forpytest. This project generates a bunch of Python test libraries that are then imported in Python test files (test_*.py) and tested usingpytest. These tests mostly cover the pybind11 Qt and utility stuff, and some standalone MO2 classes and functions (IFileTree,GuessedString, etc).tests/runnercontains C++ tests, using GTest Tests in this project instantiate a Python runner and then use it to check that plugins implemented in Python can be used properly on the C++ side.
Tests are not built by default with mob, so you will need to run cmake manually
with the proper arguments.
You need to define PLUGIN_PYTHON_TESTS with -DPLUGIN_PYTHON_TESTS when running
the configure step of cmake.
You can then build the tests
# replace vsbuild with your build folder
cmake --build vsbuild --config RelWithDebInfo --target "python-tests" "runner-tests"To run the tests, use ctest
# replace vsbuild with your build folder
ctest.exe --test-dir vsbuild -C RelWithDebInfo