summary refs log tree commit diff
path: root/lib/tests/release.nix
blob: 6e5b071173673be474574460b63ffbb93e115419 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
{ # The pkgs used for dependencies for the testing itself
  # Don't test properties of pkgs.lib, but rather the lib in the parent directory
  pkgs ? import ../.. {} // { lib = throw "pkgs.lib accessed, but the lib tests should use nixpkgs' lib path directly!"; },
  nix ? pkgs.nix,
  nixVersions ? [ pkgs.nixVersions.minimum nix pkgs.nixVersions.unstable ],
}:

let
  lib = import ../.;
  testWithNix = nix:
    pkgs.runCommand "nixpkgs-lib-tests-nix-${nix.version}" {
      buildInputs = [
        (import ./check-eval.nix)
        (import ./maintainers.nix {
          inherit pkgs;
          lib = import ../.;
        })
        (import ./teams.nix {
          inherit pkgs;
          lib = import ../.;
        })
        (import ../path/tests {
          inherit pkgs;
        })
      ];
      nativeBuildInputs = [
        nix
        pkgs.gitMinimal
      ] ++ lib.optional pkgs.stdenv.isLinux pkgs.inotify-tools;
      strictDeps = true;
    } ''
      datadir="${nix}/share"
      export TEST_ROOT=$(pwd)/test-tmp
      export HOME=$(mktemp -d)
      export NIX_BUILD_HOOK=
      export NIX_CONF_DIR=$TEST_ROOT/etc
      export NIX_LOCALSTATE_DIR=$TEST_ROOT/var
      export NIX_LOG_DIR=$TEST_ROOT/var/log/nix
      export NIX_STATE_DIR=$TEST_ROOT/var/nix
      export NIX_STORE_DIR=$TEST_ROOT/store
      export PAGER=cat
      cacheDir=$TEST_ROOT/binary-cache

      nix-store --init

      cp -r ${../.} lib
      echo "Running lib/tests/modules.sh"
      bash lib/tests/modules.sh

      echo "Running lib/tests/filesystem.sh"
      TEST_LIB=$PWD/lib bash lib/tests/filesystem.sh

      echo "Running lib/tests/sources.sh"
      TEST_LIB=$PWD/lib bash lib/tests/sources.sh

      echo "Running lib/fileset/tests.sh"
      TEST_LIB=$PWD/lib bash lib/fileset/tests.sh

      echo "Running lib/tests/systems.nix"
      [[ $(nix-instantiate --eval --strict lib/tests/systems.nix | tee /dev/stderr) == '[ ]' ]];

      mkdir $out
      echo success > $out/${nix.version}
    '';

in
  pkgs.symlinkJoin {
    name = "nixpkgs-lib-tests";
    paths = map testWithNix nixVersions;
  }