diff options
author | Eelco Dolstra <edolstra@gmail.com> | 2017-05-02T13·35+0200 |
---|---|---|
committer | Eelco Dolstra <edolstra@gmail.com> | 2017-05-02T13·46+0200 |
commit | 16535552ad69ca5397967b84fd70cc0d27a38ac1 (patch) | |
tree | 92070c2cb2190fbf883304f6c927c04570130c19 | |
parent | cef8c169b1d100685d7c7b7bfb921eaa43b5521b (diff) |
build-remote: Add a basic test
This only runs on Linux because it requires a diverted store (which uses mount/user namespaces).
-rw-r--r-- | tests/build-hook.nix | 1 | ||||
-rw-r--r-- | tests/build-remote.sh | 24 | ||||
-rw-r--r-- | tests/local.mk | 3 |
3 files changed, 27 insertions, 1 deletions
diff --git a/tests/build-hook.nix b/tests/build-hook.nix index 666cc6ef8041..8bff0fe79032 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 000000000000..071011dcb71d --- /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 06532dc58d2b..108e3febdb0c 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)) |