forked from mirrors/nixpkgs
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);
|
||||
report = passMeta (releaseTools.gcovReport { coverageRuns = [ test ]; });
|
||||
|
||||
in (if makeCoverageReport then report else test) // {
|
||||
inherit nodes driver test;
|
||||
};
|
||||
nodeNames = builtins.attrNames nodes;
|
||||
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 =
|
||||
{ drv
|
||||
|
|
Loading…
Reference in a new issue