nixosTest matrix (prev also modularity, option docs)#176557
nixosTest matrix (prev also modularity, option docs)#176557roberth wants to merge 35 commits intoNixOS:masterfrom
Conversation
nixos/lib/testing/matrix.nix
Outdated
There was a problem hiding this comment.
This is all fun, but should rather go to your personal blog post or whatever material targeted to a select audience. Literally everyone outside the western cultural circle in their mid-30s will be completely thrown off. And possibly pissed to have to filter out what matters if they just want to get their job done.
Please, please, please, do not use cultural homages and idioms in open source software! They only entrench all the social biases we already have in the community.
(I'd love to see it kept in the Git history though, because it is funny if you understand it!)
There was a problem hiding this comment.
I agree. I already felt it was on the edge of acceptable, but you're absolutely right about the biases. Thank you for reminding me!
In a way it was also "hiding" the fact that that part of the documentation was rather incomplete.
I haven't rebased it away, so you'll still be able to find it. (Remove movie references; hash might change)
8db9224 to
042ef42
Compare
042ef42 to
ed70555
Compare
Tried to make it work in NixOS#177080 but that still didn't solve all cases in practice (wip NixOS#176557). Found a simpler solution: don't number anonymous modules at all. Keys are assigned at a later stage anyway. We don't have to reinvent that solution in submoduleWith.
|
This pull request has been mentioned on NixOS Discourse. There might be relevant details there: |
9af92a6 to
15281ff
Compare
548cdc7 to
5e41764
Compare
It makes more sense to let the modules guide the invocation of this function rather than to produce a data structure and then consume it immmediately. Maybe the same should be done for exposeIntermediateAttrs. It'd turn the two functions into a catamorphism that's integrated into the modules.
7f192f2 to
1b39fb2
Compare
|
@Atemu just rebased. Annoying but wasn't all that bad. Personally I can't spend a lot of time on this, but it seems that the PR is in a decent state now. TODO: hacking
TODO: review
TODO: final double-check; manual testing
|
|
I think we should do our best to get an MVP of this PR without major regressions in first. Any further niceties and minor refactorings can come later. It's important further changes to tests can make use of this PR's core changes ASAP so that we don't diverge endlessly. Would a hydra jobset to verify help? |
|
Just need to do a bit of due diligence, but yeah, no need to drag this out.
There's a jobset any nixpkgs maintainer can reuse: https://hydra.nixos.org/jobset/nixos/python-test-refactoring. I'll document how to use it effectively. |
Documenting the testing process here #216660 |
|
I have to be honest: I don't think I'll get around to completing this. It'd be great if someone could take over. Also: don't use the existence of this as an excuse not to write parameterized nixos tests. The true cost of writing a test is in finding the requirements and doing implementation work. Changing an already parameterized test to use a framework like this is tiny. |
|
This needs modularization. In the current code, it adds a hook to override the return value. This isn't terrible, but obscures the fact that conceptually the test matrix comes before the test, even if both things can be specified in the same module. It also makes it impossible to use the test matrix logic in a context other than the NixOS test framework, or in a combined way. TODO:
|
|
Is it true that without merging this PR currently My attempts have failed.If I import `nixos/tests/some-test.nix`, the resulting set is not suitable for reuse in `runTest`. NixOS tests import `make-test-python.nix` right on the first line, that doesn't allow to access the original `nodes` attribute set. |
Description of changes
Use the module system to replace the NixOS test framework's custom glue.
importsand other module system features.common module that has most of the setup.
testing/interactive.nix: just a couple of lines that can be ignored by the other modules, as opposed to wiring it through what is nowtesting/run.nix.testing/network.nix, etcAll in all, this quite significantly collapses the number of layers and custom expressions that test authors have to deal with.
Also, more info in the expanded commit messages.
TODO:
attrArgName#177576defaultsoptioneither move to "legacy" directory and leave in place until all migrated?or big bang and monitor the falloutnixos-test-stagingjobset in hydranameinspecialArgs; feasible with somenetwork.nixrefactoring to make the nodeconfigskeleton static.done:
-
_3proxy-
acme-
adguardhome-
aesmd-
agate-
avahi-
cassandra-
oci-containers-
hostname-
networkingavahioci-containersnetworking:implementationandtestcaseaxes)matrix.<choice>.enable = false+matrix.<choice>.after)cassandra.passthru.tests.nixos)matrix(asvalue.<value>is a "parallel universe" of the entire test config) ->avahimatrix: renamevaluetomodule?Closes #144110
Things done
sandbox = trueset innix.conf? (See Nix manual)nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage./result/bin/)nixos/doc/manual/md-to-db.shto update generated release notes