diff options
author | John Ericson <Ericson2314@Yahoo.com> | 2017-02-09 16:09:47 -0500 |
---|---|---|
committer | John Ericson <Ericson2314@Yahoo.com> | 2017-04-17 17:13:01 -0400 |
commit | 8c99aab3ea4a9ddbd3918282da7861e674b4e7c4 (patch) | |
tree | 5c8a663c775e02ad7c7c714d89095f3cd500e0a0 /lib/tests | |
parent | fffcee35f9b2042d4edc5dccb3379972e03ffd84 (diff) |
lib: Fix system parsing, and use for doubles lists
The old hard-coded lists are now used to test system parsing. In the process, make an `assertTrue` in release lib for eval tests; also use it in release-cross
Diffstat (limited to 'lib/tests')
-rw-r--r-- | lib/tests/release.nix | 57 | ||||
-rw-r--r-- | lib/tests/systems.nix | 31 |
2 files changed, 64 insertions, 24 deletions
diff --git a/lib/tests/release.nix b/lib/tests/release.nix index f9f57424f7d0c..dfa4ca2676d1f 100644 --- a/lib/tests/release.nix +++ b/lib/tests/release.nix @@ -1,31 +1,40 @@ -{ nixpkgs }: +{ nixpkgs ? { outPath = (import ../.).cleanSource ../..; revCount = 1234; shortRev = "abcdef"; } +, # The platforms for which we build Nixpkgs. + supportedSystems ? [ builtins.currentSystem ] +, # Strip most of attributes when evaluating to spare memory usage + scrubJobs ? true +}: -with import ../.. { }; +with import ../../pkgs/top-level/release-lib.nix { inherit supportedSystems scrubJobs; }; with lib; -stdenv.mkDerivation { - name = "nixpkgs-lib-tests"; - buildInputs = [ nix ]; - NIX_PATH="nixpkgs=${nixpkgs}"; +{ + systems = import ./systems.nix { inherit lib assertTrue; }; - buildCommand = '' - datadir="${nix}/share" - export TEST_ROOT=$(pwd)/test-tmp - export NIX_BUILD_HOOK= - export NIX_CONF_DIR=$TEST_ROOT/etc - export NIX_DB_DIR=$TEST_ROOT/db - export NIX_LOCALSTATE_DIR=$TEST_ROOT/var - export NIX_LOG_DIR=$TEST_ROOT/var/log/nix - export NIX_MANIFESTS_DIR=$TEST_ROOT/var/nix/manifests - 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 + moduleSystem = pkgs.stdenv.mkDerivation { + name = "nixpkgs-lib-tests"; + buildInputs = [ pkgs.nix ]; + NIX_PATH="nixpkgs=${nixpkgs}"; - cd ${nixpkgs}/lib/tests - ./modules.sh + buildCommand = '' + datadir="${pkgs.nix}/share" + export TEST_ROOT=$(pwd)/test-tmp + export NIX_BUILD_HOOK= + export NIX_CONF_DIR=$TEST_ROOT/etc + export NIX_DB_DIR=$TEST_ROOT/db + export NIX_LOCALSTATE_DIR=$TEST_ROOT/var + export NIX_LOG_DIR=$TEST_ROOT/var/log/nix + export NIX_MANIFESTS_DIR=$TEST_ROOT/var/nix/manifests + 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 - touch $out - ''; + cd ${nixpkgs}/lib/tests + ./modules.sh + + touch $out + ''; + }; } diff --git a/lib/tests/systems.nix b/lib/tests/systems.nix new file mode 100644 index 0000000000000..02e316c19fe31 --- /dev/null +++ b/lib/tests/systems.nix @@ -0,0 +1,31 @@ +# We assert that the new algorithmic way of generating these lists matches the +# way they were hard-coded before. +# +# One might think "if we exhaustively test, what's the point of procedurally +# calculating the lists anyway?". The answer is one can mindlessly update these +# tests as new platforms become supported, and then just give the diff a quick +# sanity check before committing :). +{ lib, assertTrue }: + +with lib.systems.doubles; + +let mseteq = x: y: lib.sort lib.lessThan x == lib.sort lib.lessThan y; in + +{ + all = assertTrue (mseteq all (linux ++ darwin ++ cygwin ++ freebsd ++ openbsd ++ netbsd ++ illumos)); + + arm = assertTrue (mseteq arm [ "armv5tel-linux" "armv6l-linux" "armv7l-linux" ]); + i686 = assertTrue (mseteq i686 [ "i686-linux" "i686-freebsd" "i686-netbsd" "i686-cygwin" ]); + mips = assertTrue (mseteq mips [ "mips64el-linux" ]); + x86_64 = assertTrue (mseteq x86_64 [ "x86_64-linux" "x86_64-darwin" "x86_64-freebsd" "x86_64-openbsd" "x86_64-netbsd" "x86_64-cygwin" ]); + + cygwin = assertTrue (mseteq cygwin [ "i686-cygwin" "x86_64-cygwin" ]); + darwin = assertTrue (mseteq darwin [ "x86_64-darwin" ]); + freebsd = assertTrue (mseteq freebsd [ "i686-freebsd" "x86_64-freebsd" ]); + gnu = assertTrue (mseteq gnu (linux /* ++ hurd ++ kfreebsd ++ ... */)); + illumos = assertTrue (mseteq illumos [ "x86_64-solaris" ]); + linux = assertTrue (mseteq linux [ "i686-linux" "x86_64-linux" "armv5tel-linux" "armv6l-linux" "armv7l-linux" "aarch64-linux" "mips64el-linux" ]); + netbsd = assertTrue (mseteq netbsd [ "i686-netbsd" "x86_64-netbsd" ]); + openbsd = assertTrue (mseteq openbsd [ "i686-openbsd" "x86_64-openbsd" ]); + unix = assertTrue (mseteq unix (linux ++ darwin ++ freebsd ++ openbsd ++ netbsd ++ illumos)); +} |