Merge pull request #235874 from baloo/baloo/nixosTest/lib.override-support

nixosTest: adds support for lib.extend

Changed files
+36 -1
nixos
lib
testing
tests
nixos-test-driver
pkgs
build-support
testers
+1
nixos/lib/testing/nodes.nix
···
baseOS =
import ../eval-config.nix {
+
inherit lib;
system = null; # use modularly defined system
inherit (config.node) specialArgs;
modules = [ config.defaults ];
+1
nixos/tests/all-tests.nix
···
# Testing the test driver
nixos-test-driver = {
extra-python-packages = handleTest ./nixos-test-driver/extra-python-packages.nix {};
+
lib-extend = handleTestOn [ "x86_64-linux" "aarch64-linux" ] ./nixos-test-driver/lib-extend.nix {};
node-name = runTest ./nixos-test-driver/node-name.nix;
};
+31
nixos/tests/nixos-test-driver/lib-extend.nix
···
+
{ pkgs, ... }:
+
+
let
+
patchedPkgs = pkgs.extend (new: old: {
+
lib = old.lib.extend (self: super: {
+
sorry_dave = "sorry dave";
+
});
+
});
+
+
testBody = {
+
name = "demo lib overlay";
+
+
nodes = {
+
machine = { lib, ... }: {
+
environment.etc."got-lib-overlay".text = lib.sorry_dave;
+
};
+
};
+
+
# We don't need to run an actual test. Instead we build the `machine` configuration
+
# and call it a day, because that already proves that `lib` is wired up correctly.
+
# See the attrset returned at the bottom of this file.
+
testScript = "";
+
};
+
+
inherit (patchedPkgs.testers) nixosTest runNixOSTest;
+
evaluationNixosTest = nixosTest testBody;
+
evaluationRunNixOSTest = runNixOSTest testBody;
+
in {
+
nixosTest = evaluationNixosTest.driver.nodes.machine.system.build.toplevel;
+
runNixOSTest = evaluationRunNixOSTest.driver.nodes.machine.system.build.toplevel;
+
}
+3 -1
pkgs/build-support/testers/default.nix
···
# See doc/builders/testers.chapter.md or
# https://nixos.org/manual/nixpkgs/unstable/#tester-runNixOSTest
runNixOSTest =
-
let nixos = import ../../../nixos/lib {};
+
let nixos = import ../../../nixos/lib {
+
inherit lib;
+
};
in testModule:
nixos.runTest {
_file = "pkgs.runNixOSTest implementation";