Developer notes

Testing

The booz_xform package includes both C++ and python tests, including unit and regression tests, and continuous integration.

C++ tests

Unit tests of the C++ code are handled using the doctest header-only library. A copy of the library in externalPackages/doctest is used. Source code for the C++ tests is located in the tests directory. Whenever booz_xform is compiled, a unitTests executable is compiled containing the C++ tests. To access this executable, you should compile the code manually (i.e. outside of pip) using cd build; cmake ..; make -j, which will create the unitTests executable in the build directory.

Python tests

The python tests require the packages scipy and matplotlib, which the core part of booz_xform does not require.

Python tests are based on the standard unittest python module. Source code for the python tests is located in the tests directory. The python tests will use the installed version of the booz_xform python package, not necessarily a shared library compiled manually in the build directory. One way to run the python tests is to call

python -m unittest

from the repository home directory or from the tests directory. You can also execute individual *.py test files directly.

The python regression tests make use of files in the tests/test_files directory.

Continuous integration

The C++ and python tests are automatically run after every commit to the repository. This automation is handled by GitHub Actions, and controlled by the script .github/workflows/ci.yml. To view the results of the continuous integration runs, you can click on the “Actions” link from the GitHub repository page, or you can directly visit https://github.com/hiddenSymmetries/booz_xform/actions.