Awesome
ModOrganizer2 - Python Proxy
This repository contains the Python proxy plugin for ModOrganizer2. The proxy plugin allow developers to write Python plugins for ModOrganizer2.
Setup, build, tests
This repository is part of MO2 main repositories and should usually be build using
mob
.
Organization
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/proxy
contains the actual proxy plugin. This project is a simple interface between MO2 and the runner (see below). The CMake code:- generates the
plugin_python.dll
library, - generates the translation file (under
src/
), - installs necessary files for the plugin (Python DLL, Python libraries, etc),
including
mobase
.
- generates the
src/runner
contains the Python runner. This is the project that instantiates a Python interpreter and load/unload Python plugins.src/pybind11-qt
contains many utility stuff to interface pybind11 with Qt and PyQt.src/pybind11-utils
contains some utility stuff pybind11. This project is header-only.src/mobase
contains the Python plugin interface.- This projects generates the
mobase
Python library.
- This projects generates the
Some (woefully incomplete) tests are available under tests
, split in three
sub-directories:
tests/mocks
simply contains mocks ofuibase
interfaces to be used in the two other test projects.tests/python
contains 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/runner
contains 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.
Building & Running tests
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