wlroots: 0.18.1 -> 0.18.2 (#364488)
[NixPkgs.git] / nixos / lib / testing-python.nix
blobd01c1d9b5e0959888777dba7a0a6a011567c7866
1 args@{
2   system,
3   pkgs ? import ../.. { inherit system config; },
4   # Use a minimal kernel?
5   minimal ? false,
6   # Ignored
7   config ? { },
8   # !!! See comment about args in lib/modules.nix
9   specialArgs ? throw "legacy - do not use, see error below",
10   # Modules to add to each VM
11   extraConfigurations ? [ ],
13 let
14   nixos-lib = import ./default.nix { inherit (pkgs) lib; };
17 pkgs.lib.throwIf (args ? specialArgs)
18   ''
19     testing-python.nix: `specialArgs` is not supported anymore. If you're looking
20     for the public interface to the NixOS test framework, use `runTest`, and
21     `node.specialArgs`.
22     See https://nixos.org/manual/nixos/unstable/index.html#sec-calling-nixos-tests
23     and https://nixos.org/manual/nixos/unstable/index.html#test-opt-node.specialArgs
24   ''
25   rec {
27     inherit pkgs;
29     evalTest =
30       module:
31       nixos-lib.evalTest {
32         imports = [
33           extraTestModule
34           module
35         ];
36       };
37     runTest =
38       module:
39       nixos-lib.runTest {
40         imports = [
41           extraTestModule
42           module
43         ];
44       };
46     extraTestModule = {
47       config = {
48         hostPkgs = pkgs;
49       };
50     };
52     # Make a full-blown test (legacy)
53     # For an official public interface to the tests, see
54     # https://nixos.org/manual/nixos/unstable/index.html#sec-calling-nixos-tests
55     makeTest =
56       {
57         machine ? null,
58         nodes ? { },
59         testScript,
60         enableOCR ? false,
61         globalTimeout ? (60 * 60),
62         name ? "unnamed",
63         skipTypeCheck ? false,
64         # Skip linting (mainly intended for faster dev cycles)
65         skipLint ? false,
66         passthru ? { },
67         meta ? { },
68         # For meta.position
69         pos ? # position used in error messages and for meta.position
70           (
71             if meta.description or null != null then
72               builtins.unsafeGetAttrPos "description" meta
73             else
74               builtins.unsafeGetAttrPos "testScript" t
75           ),
76         extraPythonPackages ? (_: [ ]),
77         interactive ? { },
78       }@t:
79       let
80         testConfig =
81           (evalTest {
82             imports = [
83               {
84                 _file = "makeTest parameters";
85                 config = t;
86               }
87               {
88                 defaults = {
89                   _file = "makeTest: extraConfigurations";
90                   imports = extraConfigurations;
91                 };
92               }
93             ];
94           }).config;
95       in
96       testConfig.test # For nix-build
97       // testConfig; # For all-tests.nix
99     simpleTest = as: (makeTest as).test;
101   }