about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2017-05-02T13·35+0200
committerEelco Dolstra <edolstra@gmail.com>2017-05-02T13·46+0200
commit16535552ad69ca5397967b84fd70cc0d27a38ac1 (patch)
tree92070c2cb2190fbf883304f6c927c04570130c19
parentcef8c169b1d100685d7c7b7bfb921eaa43b5521b (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.nix1
-rw-r--r--tests/build-remote.sh24
-rw-r--r--tests/local.mk3
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))