This post builds on my last post, which covered how to develop your own custom NixOS test for custom packages and services.
If you want to contribute or work on upstream nixpkgs NixOS module tests, here’s a few pointers I picked up while experimenting with a flake based trial and error workflow.
To run an existing test:
- Find a test in nixpkgs/nixos/tests/all-tests.nix.
- cd to your local
nixpkgs
git checkout. - Run the test with:
nix run '.#nixosTests.$TEST_NAME.driver
.
For example, to run the nginx NixOS tests via flakes, run:
$ nix run '.#nixosTests.nginx.driver'
You can also run the tests with an interactive shell via:
$ nix run '.#nixosTests.nginx.driverInteractive'
Nix package derivations often will link a related test suite via a passthru.tests
attribute, so you can execute affected tests when
you update or change a package. For example, the gotosocial
package derivation links the tests like this:
So another way to run the tests is via the linked attribute in the package derivation like so:
$ nix run '.#gotosocial.tests.gotosocial.driver'
Just like in my previous post, a QEMU VM will boot and execute the test suite and print its results to your terminal window.