args@ { system , pkgs ? import ../.. { inherit system config; } # Use a minimal kernel? , minimal ? false # Ignored , config ? { } # !!! See comment about args in lib/modules.nix , specialArgs ? throw "legacy - do not use, see error below" # Modules to add to each VM , extraConfigurations ? [ ] }: let nixos-lib = import ./default.nix { inherit (pkgs) lib; }; in pkgs.lib.throwIf (args?specialArgs) '' testing-python.nix: `specialArgs` is not supported anymore. If you're looking for the public interface to the NixOS test framework, use `runTest`, and `node.specialArgs`. See https://nixos.org/manual/nixos/unstable/index.html#sec-calling-nixos-tests and https://nixos.org/manual/nixos/unstable/index.html#test-opt-node.specialArgs '' rec { inherit pkgs; evalTest = module: nixos-lib.evalTest { imports = [ extraTestModule module ]; }; runTest = module: nixos-lib.runTest { imports = [ extraTestModule module ]; }; extraTestModule = { config = { hostPkgs = pkgs; }; }; # Make a full-blown test (legacy) # For an official public interface to the tests, see # https://nixos.org/manual/nixos/unstable/index.html#sec-calling-nixos-tests makeTest = { machine ? null , nodes ? {} , testScript , enableOCR ? false , name ? "unnamed" , skipTypeCheck ? false # 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 meta.description or null != null then builtins.unsafeGetAttrPos "description" meta else builtins.unsafeGetAttrPos "testScript" t) , extraPythonPackages ? (_ : []) , interactive ? {} } @ t: let testConfig = (evalTest { imports = [ { _file = "makeTest parameters"; config = t; } { defaults = { _file = "makeTest: extraConfigurations"; imports = extraConfigurations; }; } ]; }).config; in testConfig.test # For nix-build // testConfig; # For all-tests.nix simpleTest = as: (makeTest as).test; }