Merge pull request #25196 from Ericson2314/recursive-platform-tests

lib: Consolidate tests into one meta job
This commit is contained in:
John Ericson 2017-05-17 11:31:57 -04:00 committed by GitHub
commit f3c989babd
5 changed files with 46 additions and 47 deletions

View File

@ -1,8 +1,8 @@
# to run these tests: # 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 # if the resulting list is empty, all tests passed
let inherit (builtins) add; in let inherit (builtins) add; in
with import ./default.nix; with import ../default.nix;
runTests { runTests {

View File

@ -1,40 +1,32 @@
{ nixpkgs ? { outPath = (import ../.).cleanSource ../..; revCount = 1234; shortRev = "abcdef"; } { pkgs ? import ((import ../../lib).cleanSource ../..) {} }:
, # The platforms for which we build Nixpkgs.
supportedSystems ? [ builtins.currentSystem ]
, # Strip most of attributes when evaluating to spare memory usage
scrubJobs ? true
}:
with import ../../pkgs/top-level/release-lib.nix { inherit supportedSystems scrubJobs; }; pkgs.stdenv.mkDerivation {
with lib; name = "nixpkgs-lib-tests";
buildInputs = [ pkgs.nix ];
NIX_PATH="nixpkgs=${pkgs.path}";
{ buildCommand = ''
systems = import ./systems.nix { inherit lib assertTrue; }; 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 { cd ${pkgs.path}/lib/tests
name = "nixpkgs-lib-tests"; ./modules.sh
buildInputs = [ pkgs.nix ];
NIX_PATH="nixpkgs=${nixpkgs}";
buildCommand = '' [[ "$(nix-instantiate --eval --strict misc.nix)" == "[ ]" ]]
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
cd ${nixpkgs}/lib/tests [[ "$(nix-instantiate --eval --strict systems.nix)" == "[ ]" ]]
./modules.sh
touch $out touch $out
''; '';
};
} }

View File

@ -5,13 +5,13 @@
# calculating the lists anyway?". The answer is one can mindlessly update these # 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 # tests as new platforms become supported, and then just give the diff a quick
# sanity check before committing :). # sanity check before committing :).
{ lib, assertTrue }: let
lib = import ../default.nix;
with lib.systems.doubles; mseteq = x: y: {
expr = lib.sort lib.lessThan x;
let mseteq = x: y: lib.sort lib.lessThan x == lib.sort lib.lessThan y; in expected = lib.sort lib.lessThan y;
};
{ in with lib.systems.doubles; lib.runTests {
all = assertTrue (mseteq all (linux ++ darwin ++ cygwin ++ freebsd ++ openbsd ++ netbsd ++ illumos)); all = assertTrue (mseteq all (linux ++ darwin ++ cygwin ++ freebsd ++ openbsd ++ netbsd ++ illumos));
arm = assertTrue (mseteq arm [ "armv5tel-linux" "armv6l-linux" "armv7l-linux" ]); arm = assertTrue (mseteq arm [ "armv5tel-linux" "armv6l-linux" "armv7l-linux" ]);

View File

@ -57,8 +57,15 @@ releaseTools.sourceTarball rec {
fi fi
# Run the regression tests in `lib'. # Run the regression tests in `lib'.
res="$(nix-instantiate --eval --strict --show-trace lib/tests.nix)" if
if test "$res" != "[ ]"; then # `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" echo "regression tests for lib failed, got: $res"
exit 1 exit 1
fi fi

View File

@ -28,7 +28,7 @@ let
metrics = import ./metrics.nix { inherit pkgs nixpkgs; }; metrics = import ./metrics.nix { inherit pkgs nixpkgs; };
manual = import ../../doc; 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 darwin-tested = pkgs.releaseTools.aggregate
{ name = "nixpkgs-darwin-${jobs.tarball.version}"; { name = "nixpkgs-darwin-${jobs.tarball.version}";
@ -52,6 +52,7 @@ let
[ jobs.tarball [ jobs.tarball
jobs.metrics jobs.metrics
jobs.manual jobs.manual
jobs.lib-tests
jobs.stdenv.x86_64-linux jobs.stdenv.x86_64-linux
jobs.stdenv.i686-linux jobs.stdenv.i686-linux
jobs.stdenv.x86_64-darwin jobs.stdenv.x86_64-darwin
@ -78,8 +79,7 @@ let
jobs.git.x86_64-darwin jobs.git.x86_64-darwin
jobs.mysql.x86_64-darwin jobs.mysql.x86_64-darwin
jobs.vim.x86_64-darwin jobs.vim.x86_64-darwin
] ++ lib.collect lib.isDerivation jobs.stdenvBootstrapTools ] ++ lib.collect lib.isDerivation jobs.stdenvBootstrapTools;
++ lib.collect lib.isDerivation jobs.lib-tests;
}; };
} // (lib.optionalAttrs (builtins.elem "i686-linux" supportedSystems) { } // (lib.optionalAttrs (builtins.elem "i686-linux" supportedSystems) {
stdenvBootstrapTools.i686-linux = stdenvBootstrapTools.i686-linux =