From 16535552ad69ca5397967b84fd70cc0d27a38ac1 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 2 May 2017 15:35:35 +0200 Subject: [PATCH] build-remote: Add a basic test This only runs on Linux because it requires a diverted store (which uses mount/user namespaces). --- tests/build-hook.nix | 1 + tests/build-remote.sh | 24 ++++++++++++++++++++++++ tests/local.mk | 3 ++- 3 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 tests/build-remote.sh diff --git a/tests/build-hook.nix b/tests/build-hook.nix index 666cc6ef8..8bff0fe79 100644 --- a/tests/build-hook.nix +++ b/tests/build-hook.nix @@ -5,6 +5,7 @@ let input1 = mkDerivation { name = "build-hook-input-1"; builder = ./dependencies.builder1.sh; + requiredSystemFeatures = ["foo"]; }; input2 = mkDerivation { diff --git a/tests/build-remote.sh b/tests/build-remote.sh new file mode 100644 index 000000000..071011dcb --- /dev/null +++ b/tests/build-remote.sh @@ -0,0 +1,24 @@ +source common.sh + +clearStore + +if [[ $(uname) != Linux ]]; then exit; fi +if [[ ! $SHELL =~ /nix/store ]]; then exit; fi + +chmod -R u+w $TEST_ROOT/store0 || true +chmod -R u+w $TEST_ROOT/store1 || true +rm -rf $TEST_ROOT/store0 $TEST_ROOT/store1 + +# FIXME: --option is not passed to build-remote, so have to create a config file. +export NIX_CONF_DIR=$TEST_ROOT/etc2 +mkdir -p $NIX_CONF_DIR +echo "build-sandbox-paths = /nix/store" > $NIX_CONF_DIR/nix.conf + +outPath=$(nix-build build-hook.nix --no-out-link -j0 --option builders "local?root=$TEST_ROOT/store0; local?root=$TEST_ROOT/store1 - - 1 1 foo" --option build-sandbox-paths /nix/store) + +cat $outPath/foobar | grep FOOBAR + +# Ensure that input1 was built on store1 due to the required feature. +p=$(readlink -f $outPath/input-2) +(! nix path-info --store local?root=$TEST_ROOT/store0 --all | grep dependencies.builder1.sh) +nix path-info --store local?root=$TEST_ROOT/store1 --all | grep dependencies.builder1.sh diff --git a/tests/local.mk b/tests/local.mk index 06532dc58..108e3febd 100644 --- a/tests/local.mk +++ b/tests/local.mk @@ -12,7 +12,8 @@ nix_tests = \ binary-cache.sh nix-profile.sh repair.sh dump-db.sh case-hack.sh \ check-reqs.sh pass-as-file.sh tarball.sh restricted.sh \ placeholders.sh nix-shell.sh \ - linux-sandbox.sh + linux-sandbox.sh \ + build-remote.sh # parallel.sh install-tests += $(foreach x, $(nix_tests), tests/$(x))