Developer documentation
Running the tests
The tests should run in the virtualenv to make sure the development tools are there:
# outside the poetry environment:
poetry run pytest
# or
poetry shell
# now we're inside the virtualenv and can run like before, but now with test coverage
pytest --cov-report term-missing --cov=edea
# it's also possible to run a single test or a test class
pytest -k test_parse
Long running test
test_parse_all and test_serialize_all process a lot of KiCad files which can take a long time. We skip them by default if the files are not there but you can enable them by retrieving the files.
# the files are in the kicad-test-files git submodule, retrieve them
git submodule update --init
# we'd like to parallelize the tests using pytest-xdist to speed things up
# automatically detecting the optimal number of processes for your machine
poetry run pytest -n auto
Performance
Tip
The devconainer has all required tools for performance optimization.
Profiling
The tests/kicad_projects/benchmarks submodule includes many benchmark files to profile different components of edea. Some targets are in tests/benchmark and can run them using the following commands:
poetry shell
git submodule init tests/kicad_projects/benchmarks && git submodule update --depth 1 tests/kicad_projects/benchmarks
poe profile --file tests/benchmark/cli_version.py
This profiles the benchmark and opens the pyinstrument HTML report in the browser.
Benchmarking
You can use hyperfine for benchmarking the performance of edea:
poetry shell
git submodule init tests/kicad_projects/benchmarks && git submodule update --depth 1 tests/kicad_projects/benchmarks
poe benchmark --file tests/benchmark/cli_version.py
This benchmark the benchmark using hyperfine.`
Continuous benchmarking
You can see continuous benchmarking results at bencher . The CI job is in .gitlab-ci.benchmark.yml.