Development¶
The tox.toml and Makefile provide an overview of the CI processing.
Makefile targets:
quick: Uses thequickenvironment in tox.test: the full test suite, including static analysis.docs: Creates the documentation.docs-coverage: a report of how many modules, classes, methods, and functions have documentation.apidoc_gen: re-generates anapidoc.rst. Useful after significant revisions or extensions.
Tox environments.
default, used by
tox runis a full test suite, and static analysis.quickruns the tests in thetestsdirectory.demoruns the tests in thedemodirectory.docsruns doctest on the examples in the documentation.
Testing¶
There are three “tiers” of testing for Stingray Reader.
Unit testing.
Some tests use
pytest. This should have 100% code coverage.Additional tests use
doctest. These are examples from code and documentation that are also validated.
Integration testing. All of the sample files are processed through a test case to be sure they can be read.
Acceptance testing. The
demodirectory contains applications which serve as acceptance test cases.
Static Analysis¶
Additionally, ruff and pyright are used to be sure the code has no obvious flaws and the type hints are correct and consistent.
Documentation¶
Sphinx is used.
Note that diagrams are created with plantUML.
This relies on Java.
Both the Makefile and the config.py references to the required JAR file.
Makefile:
curl -LSf https://github.com/plantuml/plantuml/releases/download/v1.2024.7/plantuml-1.2024.7.jar -o .plantuml/plantuml-1.2024.7.jar
docs/source/config.py:
_plantuml_path = Path.cwd().parent.parent / ".plantuml" / "plantuml-1.2024.7.jar"
Yes. Both of these pin a specific version number. It changes rarely.