mirror of
https://github.com/ilyakooo0/nixpkgs.git
synced 2024-12-26 04:43:09 +03:00
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 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
|
||||
{ key = "no-manual"; documentation.nixos.enable = false; }
|
||||
{ key = "qemu"; system.build.qemu = qemu; }
|
||||
] ++ optional minimal ../modules/testing/minimal-kernel.nix;
|
||||
] ++ optional minimal ../modules/testing/minimal-kernel.nix
|
||||
++ extraConfigurations;
|
||||
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;
|
||||
|
||||
let
|
||||
|
@ -30,5 +30,7 @@ with pkgs;
|
||||
|
||||
cross = callPackage ./cross {};
|
||||
|
||||
nixos-functions = callPackage ./nixos-functions {};
|
||||
|
||||
patch-shebangs = callPackage ./patch-shebangs {};
|
||||
}
|
||||
|
33
pkgs/test/nixos-functions/default.nix
Normal file
33
pkgs/test/nixos-functions/default.nix
Normal file
@ -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;
|
||||
|
||||
|
||||
/*
|
||||
* 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; };
|
||||
|
||||
nixdoc = callPackage ../tools/nix/nixdoc {};
|
||||
|
Loading…
Reference in New Issue
Block a user