Merge pull request #47684 from roberth/nixpkgs-nixosTest
Add pkgs.nixosTest
This commit is contained in:
commit
0874ee8f05
|
@ -1,4 +1,13 @@
|
||||||
{ system, pkgs, minimal ? false, config ? {} }:
|
{ system
|
||||||
|
, # Use a minimal kernel?
|
||||||
|
minimal ? false
|
||||||
|
, # Ignored
|
||||||
|
config ? null
|
||||||
|
# Nixpkgs, for qemu, lib and more
|
||||||
|
, pkgs
|
||||||
|
, # NixOS configuration to add to the VMs
|
||||||
|
extraConfigurations ? []
|
||||||
|
}:
|
||||||
|
|
||||||
with pkgs.lib;
|
with pkgs.lib;
|
||||||
with import ../lib/qemu-flags.nix { inherit pkgs; };
|
with import ../lib/qemu-flags.nix { inherit pkgs; };
|
||||||
|
@ -28,7 +37,8 @@ rec {
|
||||||
../modules/testing/test-instrumentation.nix # !!! should only get added for automated test runs
|
../modules/testing/test-instrumentation.nix # !!! should only get added for automated test runs
|
||||||
{ key = "no-manual"; documentation.nixos.enable = false; }
|
{ key = "no-manual"; documentation.nixos.enable = false; }
|
||||||
{ key = "qemu"; system.build.qemu = qemu; }
|
{ key = "qemu"; system.build.qemu = qemu; }
|
||||||
] ++ optional minimal ../modules/testing/minimal-kernel.nix;
|
] ++ optional minimal ../modules/testing/minimal-kernel.nix
|
||||||
|
++ extraConfigurations;
|
||||||
extraArgs = { inherit nodes; };
|
extraArgs = { inherit nodes; };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,13 @@
|
||||||
{ system, pkgs, minimal ? false, config ? {} }:
|
{ system
|
||||||
|
, pkgs
|
||||||
|
# Use a minimal kernel?
|
||||||
|
, minimal ? false
|
||||||
|
# Ignored
|
||||||
|
, config ? null
|
||||||
|
# Modules to add to each VM
|
||||||
|
, extraConfigurations ? [] }:
|
||||||
|
|
||||||
with import ./build-vms.nix { inherit system pkgs minimal config; };
|
with import ./build-vms.nix { inherit system pkgs minimal extraConfigurations; };
|
||||||
with pkgs;
|
with pkgs;
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
|
@ -30,5 +30,7 @@ with pkgs;
|
||||||
|
|
||||||
cross = callPackage ./cross {};
|
cross = callPackage ./cross {};
|
||||||
|
|
||||||
|
nixos-functions = callPackage ./nixos-functions {};
|
||||||
|
|
||||||
patch-shebangs = callPackage ./patch-shebangs {};
|
patch-shebangs = callPackage ./patch-shebangs {};
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
This file is a test that makes sure that the `pkgs.nixos` and
|
||||||
|
`pkgs.nixosTest` functions work. It's far from a perfect test suite,
|
||||||
|
but better than not checking them at all on hydra.
|
||||||
|
|
||||||
|
To run this test:
|
||||||
|
|
||||||
|
nixpkgs$ nix-build -A tests.nixos-functions
|
||||||
|
|
||||||
|
*/
|
||||||
|
{ pkgs, lib, stdenv, ... }:
|
||||||
|
|
||||||
|
lib.optionalAttrs stdenv.hostPlatform.isLinux (
|
||||||
|
pkgs.recurseIntoAttrs {
|
||||||
|
|
||||||
|
nixos-test = (pkgs.nixos {
|
||||||
|
boot.loader.grub.enable = false;
|
||||||
|
fileSystems."/".device = "/dev/null";
|
||||||
|
}).toplevel;
|
||||||
|
|
||||||
|
nixosTest-test = pkgs.nixosTest ({ lib, pkgs, ... }: {
|
||||||
|
name = "nixosTest-test";
|
||||||
|
machine = { pkgs, ... }: {
|
||||||
|
environment.systemPackages = [ pkgs.hello ];
|
||||||
|
};
|
||||||
|
testScript = ''
|
||||||
|
$machine->succeed("hello");
|
||||||
|
'';
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
)
|
|
@ -22219,6 +22219,61 @@ with pkgs;
|
||||||
);
|
);
|
||||||
}).config.system.build;
|
}).config.system.build;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Run a NixOS VM network test using this evaluation of Nixpkgs.
|
||||||
|
*
|
||||||
|
* It is mostly equivalent to `import ./make-test.nix` from the
|
||||||
|
* NixOS manual[1], except that your `pkgs` will be used instead of
|
||||||
|
* letting NixOS invoke Nixpkgs again. If a test machine needs to
|
||||||
|
* set NixOS options under `nixpkgs`, it must set only the
|
||||||
|
* `nixpkgs.pkgs` option. For the details, see the Nixpkgs
|
||||||
|
* `pkgs.nixos` documentation.
|
||||||
|
*
|
||||||
|
* Parameter:
|
||||||
|
* A NixOS VM test network, or path to it. Example:
|
||||||
|
*
|
||||||
|
* { lib, ... }:
|
||||||
|
* { name = "my-test";
|
||||||
|
* nodes = {
|
||||||
|
* machine-1 = someNixOSConfiguration;
|
||||||
|
* machine-2 = ...;
|
||||||
|
* }
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* Result:
|
||||||
|
* A derivation that runs the VM test.
|
||||||
|
*
|
||||||
|
* [1]: For writing NixOS tests, see
|
||||||
|
* https://nixos.org/nixos/manual/index.html#sec-nixos-tests
|
||||||
|
*/
|
||||||
|
nixosTest =
|
||||||
|
let
|
||||||
|
/* The nixos/lib/testing.nix module, preapplied with arguments that
|
||||||
|
* make sense for this evaluation of Nixpkgs.
|
||||||
|
*/
|
||||||
|
nixosTesting =
|
||||||
|
(import ../../nixos/lib/testing.nix {
|
||||||
|
inherit (pkgs.stdenv.hostPlatform) system;
|
||||||
|
inherit pkgs;
|
||||||
|
extraConfigurations = [(
|
||||||
|
{ lib, ... }: {
|
||||||
|
config.nixpkgs.pkgs = lib.mkDefault pkgs;
|
||||||
|
}
|
||||||
|
)];
|
||||||
|
});
|
||||||
|
in
|
||||||
|
test:
|
||||||
|
let
|
||||||
|
loadedTest = if builtins.typeOf test == "path"
|
||||||
|
then import test
|
||||||
|
else test;
|
||||||
|
calledTest = if pkgs.lib.isFunction loadedTest
|
||||||
|
then callPackage loadedTest {}
|
||||||
|
else loadedTest;
|
||||||
|
in
|
||||||
|
nixosTesting.makeTest calledTest;
|
||||||
|
|
||||||
nixui = callPackage ../tools/package-management/nixui { node_webkit = nwjs_0_12; };
|
nixui = callPackage ../tools/package-management/nixui { node_webkit = nwjs_0_12; };
|
||||||
|
|
||||||
nixdoc = callPackage ../tools/nix/nixdoc {};
|
nixdoc = callPackage ../tools/nix/nixdoc {};
|
||||||
|
|
Loading…
Reference in New Issue