Tests
Running the tests
The test dependencies come with the dev extra, so no separate install is needed:
uv run pytest
Long-running parameter sweeps are marked slow and excluded by default (see addopts in
pyproject.toml). Run them explicitly with:
uv run pytest -m slow
Some suites include relatively expensive simulations. To run one suite, or to see example usage of a
particular solver, point pytest at a directory or use -k:
uv run pytest tests/test_vlasov1d
uv run pytest -k landau_damping
The tests double as the most reliable examples in the repo — each one builds a config and drives a
solver through the ergoExo lifecycle.
Test Suite
Tests are organized one directory per solver.
Directory |
Covers |
|---|---|
|
|
|
Landau damping, absorbing wave boundaries, EM dispersion, multispecies, Fokker-Planck conservation, Boltzmann electrons, config validation and regression |
|
Equivalence with the 1D solver in the separable limit, conservation, and the cylindrical Landau operator |
|
Landau damping, EM dispersion, gyrorotation, distributed initialization |
|
Fokker-Planck models and relaxation, heating, Epperlein-Haines transport coefficients, spherical geometry |
|
EPW frequency, TPD threshold, speckle, dealiasing, pretrained-driver loading |
|
Landau damping, Maxwell solver, shift and Lorentz operators |
|
Conservation, streaming, Landau damping, linear advection, implicit/IMEX integrators |
|
Collisions, E-field coupling, drivers, integrators, filtering, linear response |
|
Bohm-Gross dispersion, Landau damping, two-stream instability |
|
Bohm-Gross and kinetic resonance (forward and backward pass), Landau damping, agreement with a Vlasov run |
Continuous integration
.github/workflows/cpu-tests.yaml runs the suites on every pull request. Solver suites are gated by
a dorny/paths-filter step so that touching one solver runs only its tests, while touching shared
code (adept/_base_.py, adept/utils.py, pyproject.toml, …) runs everything. A push to main or
a manual dispatch always runs the full set.
Note
The test_vlasov1d2v, test_vlasov2d, and test_tf1d suites do not currently have a CI job and so
are only run locally.