Merge pull request #335672 from tomberek/tomberek.nixos_test
nixosTest.nix-upgrade: init
This commit is contained in:
commit
7f7df390e6
@ -680,6 +680,7 @@ in {
|
|||||||
nix-config = handleTest ./nix-config.nix {};
|
nix-config = handleTest ./nix-config.nix {};
|
||||||
nix-ld = handleTest ./nix-ld.nix {};
|
nix-ld = handleTest ./nix-ld.nix {};
|
||||||
nix-misc = handleTest ./nix/misc.nix {};
|
nix-misc = handleTest ./nix/misc.nix {};
|
||||||
|
nix-upgrade = handleTest ./nix/upgrade.nix {inherit (pkgs) nixVersions;};
|
||||||
nix-required-mounts = runTest ./nix-required-mounts;
|
nix-required-mounts = runTest ./nix-required-mounts;
|
||||||
nix-serve = handleTest ./nix-serve.nix {};
|
nix-serve = handleTest ./nix-serve.nix {};
|
||||||
nix-serve-ssh = handleTest ./nix-serve-ssh.nix {};
|
nix-serve-ssh = handleTest ./nix-serve-ssh.nix {};
|
||||||
|
108
nixos/tests/nix/upgrade.nix
Normal file
108
nixos/tests/nix/upgrade.nix
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
{ pkgs, nixVersions, ... }:
|
||||||
|
let
|
||||||
|
lib = pkgs.lib;
|
||||||
|
|
||||||
|
fallback-paths-external = pkgs.writeTextDir "fallback-paths.nix" ''
|
||||||
|
{
|
||||||
|
${pkgs.system} = "${nixVersions.latest}";
|
||||||
|
}'';
|
||||||
|
|
||||||
|
inputDrv = import ../.. {
|
||||||
|
configuration = {
|
||||||
|
imports = [ nixos-module ];
|
||||||
|
nix.package = nixVersions.latest;
|
||||||
|
boot.isContainer = true;
|
||||||
|
|
||||||
|
users.users.alice.isNormalUser = true;
|
||||||
|
};
|
||||||
|
system = pkgs.system;
|
||||||
|
};
|
||||||
|
|
||||||
|
nixos-module = builtins.toFile "nixos-module.nix" ''
|
||||||
|
{ lib, pkgs, modulesPath, ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
(modulesPath + "/profiles/minimal.nix")
|
||||||
|
(modulesPath + "/testing/test-instrumentation.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
hardware.enableAllFirmware = lib.mkForce false;
|
||||||
|
|
||||||
|
nix.settings.substituters = lib.mkForce [];
|
||||||
|
nix.settings.hashed-mirrors = null;
|
||||||
|
nix.settings.connect-timeout = 1;
|
||||||
|
nix.extraOptions = "experimental-features = nix-command";
|
||||||
|
|
||||||
|
environment.localBinInPath = true;
|
||||||
|
users.users.alice = {
|
||||||
|
isNormalUser = true;
|
||||||
|
packages = [ pkgs.nixVersions.latest ];
|
||||||
|
};
|
||||||
|
documentation.enable = false;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
|
||||||
|
pkgs.testers.nixosTest {
|
||||||
|
name = "nix-upgrade-${nixVersions.stable.version}-${nixVersions.latest.version}";
|
||||||
|
meta.maintainers = with lib.maintainers; [ tomberek ];
|
||||||
|
|
||||||
|
nodes.machine = {
|
||||||
|
imports = [ nixos-module ];
|
||||||
|
|
||||||
|
nix.package = nixVersions.stable;
|
||||||
|
system.extraDependencies = [
|
||||||
|
fallback-paths-external
|
||||||
|
inputDrv.system
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
machine.start()
|
||||||
|
machine.wait_for_unit("multi-user.target")
|
||||||
|
|
||||||
|
with subtest("nix-current"):
|
||||||
|
# Create a profile to pretend we are on non-NixOS
|
||||||
|
|
||||||
|
print(machine.succeed("nix --version"))
|
||||||
|
print(machine.succeed("nix-env -i /run/current-system/sw/bin/nix -p /root/.local"))
|
||||||
|
|
||||||
|
with subtest("nix-upgrade"):
|
||||||
|
print(machine.succeed("nix upgrade-nix --nix-store-paths-url file://${fallback-paths-external}/fallback-paths.nix --profile /root/.local"))
|
||||||
|
result = machine.succeed("nix --version")
|
||||||
|
print(result)
|
||||||
|
|
||||||
|
import re
|
||||||
|
match = re.match(r".*${nixVersions.latest.version}$",result)
|
||||||
|
if not match: raise Exception("Couldn't find new version in output: " + result)
|
||||||
|
|
||||||
|
with subtest("nix-build-with-mismatch-daemon"):
|
||||||
|
machine.succeed("runuser -u alice -- nix build --expr 'derivation {name =\"test\"; system = \"${pkgs.system}\";builder = \"/bin/sh\"; args = [\"-c\" \"echo test > $out\"];}' --print-out-paths")
|
||||||
|
|
||||||
|
|
||||||
|
with subtest("remove-new-nix"):
|
||||||
|
machine.succeed("rm -rf /root/.local")
|
||||||
|
|
||||||
|
result = machine.succeed("nix --version")
|
||||||
|
print(result)
|
||||||
|
|
||||||
|
import re
|
||||||
|
match = re.match(r".*${nixVersions.stable.version}$",result)
|
||||||
|
|
||||||
|
with subtest("upgrade-via-switch-to-configuration"):
|
||||||
|
# not using nixos-rebuild due to nix-instantiate being called and forcing all drv's to be rebuilt
|
||||||
|
print(machine.succeed("${inputDrv.system.outPath}/bin/switch-to-configuration switch"))
|
||||||
|
result = machine.succeed("nix --version")
|
||||||
|
print(result)
|
||||||
|
|
||||||
|
import re
|
||||||
|
match = re.match(r".*${nixVersions.latest.version}$",result)
|
||||||
|
if not match: raise Exception("Couldn't find new version in output: " + result)
|
||||||
|
|
||||||
|
with subtest("nix-build-with-new-daemon"):
|
||||||
|
machine.succeed("runuser -u alice -- nix build --expr 'derivation {name =\"test-new\"; system = \"${pkgs.system}\";builder = \"/bin/sh\"; args = [\"-c\" \"echo test > $out\"];}' --print-out-paths")
|
||||||
|
|
||||||
|
with subtest("nix-collect-garbage-with-old-nix"):
|
||||||
|
machine.succeed("${nixVersions.stable}/bin/nix-collect-garbage")
|
||||||
|
'';
|
||||||
|
}
|
@ -65,6 +65,7 @@ in
|
|||||||
, mdbook-linkcheck
|
, mdbook-linkcheck
|
||||||
, nlohmann_json
|
, nlohmann_json
|
||||||
, nixosTests
|
, nixosTests
|
||||||
|
, nixVersions
|
||||||
, openssl
|
, openssl
|
||||||
, perl
|
, perl
|
||||||
, pkg-config
|
, pkg-config
|
||||||
@ -261,6 +262,7 @@ self = stdenv.mkDerivation {
|
|||||||
# Basic smoke test that needs to pass when upgrading nix.
|
# Basic smoke test that needs to pass when upgrading nix.
|
||||||
# Note that this test does only test the nixVersions.stable attribute.
|
# Note that this test does only test the nixVersions.stable attribute.
|
||||||
misc = nixosTests.nix-misc.default;
|
misc = nixosTests.nix-misc.default;
|
||||||
|
upgrade = nixosTests.nix-upgrade;
|
||||||
|
|
||||||
srcVersion = runCommand "nix-src-version" {
|
srcVersion = runCommand "nix-src-version" {
|
||||||
inherit version;
|
inherit version;
|
||||||
|
Loading…
Reference in New Issue
Block a user