3
0
Fork 0
forked from mirrors/nixpkgs

nixos/testing: restrict arguments to makeTest

Disallow passing arbitrary arguments to makeTest since they are not
used; this can help catch mistakes.
This commit is contained in:
Naïm Favier 2022-03-18 01:20:21 +01:00
parent 9077b1a631
commit 79a234567c
No known key found for this signature in database
GPG key ID: 49B07322580B7EE2
2 changed files with 16 additions and 13 deletions

View file

@ -146,26 +146,28 @@ rec {
# Make a full-blown test
makeTest =
{ testScript
{ machine ? null
, nodes ? {}
, testScript
, enableOCR ? false
, name ? "unnamed"
# Skip linting (mainly intended for faster dev cycles)
, skipLint ? false
, passthru ? {}
, meta ? {}
, # For meta.position
pos ? # position used in error messages and for meta.position
(if t.meta.description or null != null
then builtins.unsafeGetAttrPos "description" t.meta
(if meta.description or null != null
then builtins.unsafeGetAttrPos "description" meta
else builtins.unsafeGetAttrPos "testScript" t)
, ...
} @ t:
let
nodes = qemu_pkg:
mkNodes = qemu_pkg:
let
testScript' =
# Call the test script with the computed nodes.
if lib.isFunction testScript
then testScript { nodes = nodes qemu_pkg; }
then testScript { nodes = mkNodes qemu_pkg; }
else testScript;
build-vms = import ./build-vms.nix {
@ -205,33 +207,34 @@ rec {
};
in
build-vms.buildVirtualNetwork (
t.nodes or (if t ? machine then { machine = t.machine; } else { })
nodes // lib.optionalAttrs (machine != null) { inherit machine; }
);
driver = setupDriverForTest {
inherit testScript enableOCR skipLint passthru;
testName = name;
qemu_pkg = pkgs.qemu_test;
nodes = nodes pkgs.qemu_test;
nodes = mkNodes pkgs.qemu_test;
};
driverInteractive = setupDriverForTest {
inherit testScript enableOCR skipLint passthru;
testName = name;
qemu_pkg = pkgs.qemu;
nodes = nodes pkgs.qemu;
nodes = mkNodes pkgs.qemu;
interactive = true;
};
test =
let
passMeta = drv: drv // lib.optionalAttrs (t ? meta) {
meta = (drv.meta or { }) // t.meta;
passMeta = drv: drv // lib.optionalAttrs (meta != {}) {
meta = (drv.meta or { }) // meta;
};
in passMeta (runTests { inherit driver pos driverInteractive; });
in
test // {
inherit test driver driverInteractive nodes;
inherit test driver driverInteractive;
inherit (driver) nodes;
};
abortForFunction = functionName: abort ''The ${functionName} function was

View file

@ -33613,7 +33613,7 @@ with pkgs;
then import test
else test;
calledTest = if lib.isFunction loadedTest
then callPackage loadedTest {}
then loadedTest { inherit pkgs lib; }
else loadedTest;
in
nixosTesting.makeTest calledTest;