nixos/testing: disallow special chars in machine names in network expressions
These names are referenced by Perl variables inside the testing frameworks which don't allow chars like `-` as character inside. An exemplary expression may look like this: ``` { x11-vm = { services.xserver.enable = true; }; } ``` This expression evaluates, e.g. when running `nixos-build-vms`, but when trying to run `./result/bin/nixos-run-vms`, an error like this occurs: ``` starting VDE switch for network 1 running the VM test script error: Can't modify subtraction (-) in scalar assignment at (eval 17) line 1, at EOF Bareword "test" not allowed while "strict subs" in use at (eval 17) line 1. Can't modify subtraction (-) in scalar assignment at (eval 17) line 1, at EOF Bareword "test" not allowed while "strict subs" in use at (eval 17) line 1. vde_switch: EOF on stdin, cleaning up and exiting cleaning up ``` This can be very confusing for beginners, this change breaks evaluation if such names are used for machines.
This commit is contained in:
parent
bc1911e96e
commit
113a6b9325
@ -149,9 +149,23 @@ in rec {
|
|||||||
test = passMeta (runTests driver);
|
test = passMeta (runTests driver);
|
||||||
report = passMeta (releaseTools.gcovReport { coverageRuns = [ test ]; });
|
report = passMeta (releaseTools.gcovReport { coverageRuns = [ test ]; });
|
||||||
|
|
||||||
in (if makeCoverageReport then report else test) // {
|
nodeNames = builtins.attrNames nodes;
|
||||||
inherit nodes driver test;
|
invalidNodeNames = lib.filter
|
||||||
};
|
(node: builtins.match "^[A-z_][A-z0-9_]+$" node == null) nodeNames;
|
||||||
|
|
||||||
|
in
|
||||||
|
if lib.length invalidNodeNames > 0 then
|
||||||
|
throw ''
|
||||||
|
Cannot create machines out of (${lib.concatStringsSep ", " invalidNodeNames})!
|
||||||
|
All machines are references as perl variables in the testing framework which will break the
|
||||||
|
script when special characters are allowed.
|
||||||
|
|
||||||
|
Please stick to alphanumeric chars and underscores as separation.
|
||||||
|
''
|
||||||
|
else
|
||||||
|
(if makeCoverageReport then report else test) // {
|
||||||
|
inherit nodes driver test;
|
||||||
|
};
|
||||||
|
|
||||||
runInMachine =
|
runInMachine =
|
||||||
{ drv
|
{ drv
|
||||||
|
Loading…
Reference in New Issue
Block a user