Shared integration test infrastructure for the Rugix project.
Note
Support: This is internal test infrastructure. It is not intended for general use, and its interfaces may change without notice.
Rugix Ctrl and Rugix Bakery live in separate repositories to enable independent release cycles. Testing Rugix Ctrl requires building complete system images to test actual updates in VMs, which is done using Rugix Bakery. To this end, this repository provides a shared test suite that both projects include as a submodule, allowing us to validate changes in both tools against a unified, comprehensive set of tests.
The system tests are written in pytest on top of rugix-testkit. Images are baked inside the rugix-bakery container; QEMU runs on the host.
Prerequisites:
- A container runtime (
podmanordocker) for the bake stage. qemu-system-x86_64and OVMF firmware on PATH (system packages, e.g.qemufrom your distro ornix-shell -p qemu).mise, which installs Python anduv.rugix-testkitand the other Python dependencies are fetched on first run.
./generate-test-keys.sh
mise install
mise run check # lint + typecheck + tests
mise run test # tests onlyPer-test artifacts (serial console, command history) land under test-outputs/<nodeid>/.
A few tests carry the extended marker (deb-package install variants, system-state persistence) and are skipped by default. Set RUGIX_TESTS_EXTENDED=1 to run them.
The pytest entrypoint automatically exports RUGIX_BINARIES_DIR=../build/binaries when that directory exists and the variable is not already set. run-bakery then bind-mounts those binaries into the Bakery container, which lets Rugix CI test freshly built Rugix binaries while Bakery CI can continue testing the binaries embedded in its own image.
This project is licensed under either MIT or Apache 2.0 at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache 2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Made with ❤️ for OSS by Silitics