Skip to content

Testing suite

tests unit tests integration tests Tests coverage

The test-count badges show how many tests the suite carries, split into the mocked unit tests that run on every pull request and the integration tests that run the real evolutionary-track model nightly. They read small JSON files on the repository's badges branch that the Refresh test count badges workflow regenerates whenever the test suite or source changes on main, so the counts stay current without hand editing. The same files back the module's row on the central PROTEUS validation page.

The suite is a regression net: a passing run confirms that recent changes have not perturbed locked behaviour, not that the behaviour is itself physically correct. Physical correctness is judged separately, against analytic limits, benchmark codes, and published references; each physics source records its anchor on a validation page (docs/Validation/).

Test tiers and coverage

Every test declares a tier. The unit and smoke tiers run on every pull request under a ten-minute cap; the integration and slow tiers run the real Baraffe and Spada tracks nightly. Line coverage is measured on the full suite nightly and uploaded to Codecov, where the coverage badge above is served. The coverage gates move one way: a pull-request check blocks any change that lowers them, and the thresholds are raised toward the 90% ecosystem target as coverage improves.

Badge system

The badge JSON files sit at the root of the badges branch in the shields.io endpoint schema. Publishing to a dedicated branch keeps the generated files off main, where direct pushes need review. The Refresh test count badges workflow regenerates the counts whenever the test suite or source changes on main and publishes them there; shields.io fetches them live.

For how to run the suite, see Testing.