From 296753f0947427d5753be68ae10363ac1b8b4cdc Mon Sep 17 00:00:00 2001 From: John Ericson <Ericson2314@Yahoo.com> Date: Mon, 24 Apr 2017 20:12:43 -0400 Subject: [PATCH] lib: Consolidate tests into one meta job --- lib/{tests.nix => tests/misc.nix} | 4 +-- lib/tests/release.nix | 58 +++++++++++++------------------ lib/tests/systems.nix | 14 ++++---- pkgs/top-level/make-tarball.nix | 11 ++++-- pkgs/top-level/release.nix | 6 ++-- 5 files changed, 46 insertions(+), 47 deletions(-) rename lib/{tests.nix => tests/misc.nix} (98%) diff --git a/lib/tests.nix b/lib/tests/misc.nix similarity index 98% rename from lib/tests.nix rename to lib/tests/misc.nix index a201fa9ed15d..334e1a707334 100644 --- a/lib/tests.nix +++ b/lib/tests/misc.nix @@ -1,8 +1,8 @@ # to run these tests: -# nix-instantiate --eval --strict nixpkgs/lib/tests.nix +# nix-instantiate --eval --strict nixpkgs/lib/tests/misc.nix # if the resulting list is empty, all tests passed let inherit (builtins) add; in -with import ./default.nix; +with import ../default.nix; runTests { diff --git a/lib/tests/release.nix b/lib/tests/release.nix index dfa4ca2676d1..77dff39edfaa 100644 --- a/lib/tests/release.nix +++ b/lib/tests/release.nix @@ -1,40 +1,32 @@ -{ 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 -}: +{ pkgs ? import ((import ../../lib).cleanSource ../..) {} }: -with import ../../pkgs/top-level/release-lib.nix { inherit supportedSystems scrubJobs; }; -with lib; +pkgs.stdenv.mkDerivation { + name = "nixpkgs-lib-tests"; + buildInputs = [ pkgs.nix ]; + NIX_PATH="nixpkgs=${pkgs.path}"; -{ - systems = import ./systems.nix { inherit lib assertTrue; }; + 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 - moduleSystem = pkgs.stdenv.mkDerivation { - name = "nixpkgs-lib-tests"; - buildInputs = [ pkgs.nix ]; - NIX_PATH="nixpkgs=${nixpkgs}"; + cd ${pkgs.path}/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 + [[ "$(nix-instantiate --eval --strict misc.nix)" == "[ ]" ]] - cd ${nixpkgs}/lib/tests - ./modules.sh + [[ "$(nix-instantiate --eval --strict systems.nix)" == "[ ]" ]] - touch $out - ''; - }; + touch $out + ''; } diff --git a/lib/tests/systems.nix b/lib/tests/systems.nix index 5eacc0defafb..523fd3feb3b0 100644 --- a/lib/tests/systems.nix +++ b/lib/tests/systems.nix @@ -5,13 +5,13 @@ # 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 - -{ +let + lib = import ../default.nix; + mseteq = x: y: { + expr = lib.sort lib.lessThan x; + expected = lib.sort lib.lessThan y; + }; +in with lib.systems.doubles; lib.runTests { all = assertTrue (mseteq all (linux ++ darwin ++ cygwin ++ freebsd ++ openbsd ++ netbsd ++ illumos)); arm = assertTrue (mseteq arm [ "armv5tel-linux" "armv6l-linux" "armv7l-linux" ]); diff --git a/pkgs/top-level/make-tarball.nix b/pkgs/top-level/make-tarball.nix index a69e7019c874..c7e5f21910bb 100644 --- a/pkgs/top-level/make-tarball.nix +++ b/pkgs/top-level/make-tarball.nix @@ -57,8 +57,15 @@ releaseTools.sourceTarball rec { fi # Run the regression tests in `lib'. - res="$(nix-instantiate --eval --strict --show-trace lib/tests.nix)" - if test "$res" != "[ ]"; then + if + # `set -e` doesn't work inside here, so need to && instead :( + res="$(nix-instantiate --eval --strict lib/tests/misc.nix)" \ + && [[ "$res" == "[ ]" ]] \ + && res="$(nix-instantiate --eval --strict lib/tests/systems.nix)" \ + && [[ "$res" == "[ ]" ]] + then + true + else echo "regression tests for lib failed, got: $res" exit 1 fi diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix index cf4d54fe0496..3931a3fe73ed 100644 --- a/pkgs/top-level/release.nix +++ b/pkgs/top-level/release.nix @@ -28,7 +28,7 @@ let metrics = import ./metrics.nix { inherit pkgs nixpkgs; }; manual = import ../../doc; - lib-tests = import ../../lib/tests/release.nix { inherit nixpkgs supportedSystems scrubJobs; }; + lib-tests = import ../../lib/tests/release.nix { inherit pkgs; }; darwin-tested = pkgs.releaseTools.aggregate { name = "nixpkgs-darwin-${jobs.tarball.version}"; @@ -52,6 +52,7 @@ let [ jobs.tarball jobs.metrics jobs.manual + jobs.lib-tests jobs.stdenv.x86_64-linux jobs.stdenv.i686-linux jobs.stdenv.x86_64-darwin @@ -78,8 +79,7 @@ let jobs.git.x86_64-darwin jobs.mysql.x86_64-darwin jobs.vim.x86_64-darwin - ] ++ lib.collect lib.isDerivation jobs.stdenvBootstrapTools - ++ lib.collect lib.isDerivation jobs.lib-tests; + ] ++ lib.collect lib.isDerivation jobs.stdenvBootstrapTools; }; } // (lib.optionalAttrs (builtins.elem "i686-linux" supportedSystems) { stdenvBootstrapTools.i686-linux =