aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Ericson <John.Ericson@Obsidian.Systems>2020-08-12 13:24:39 +0000
committerJohn Ericson <John.Ericson@Obsidian.Systems>2020-08-13 04:07:14 +0000
commitd2f2be0f701f8b091a00b8898dc7fb922096cfaf (patch)
tree7c28744a3ed071851e7491ae95d4fc84e129b118
parent5d67f18c86f43d4efa57a5f0dcc3f1d27499ca2a (diff)
Test `RemoteStore::buildDerivation`
Fix `wopNarFromPath` which needed a `toRealPath`.
-rw-r--r--src/libstore/daemon.cc2
-rw-r--r--tests/build-hook.nix12
-rw-r--r--tests/build-remote.sh23
3 files changed, 30 insertions, 7 deletions
diff --git a/src/libstore/daemon.cc b/src/libstore/daemon.cc
index 7a6eb99be..956a8dc8d 100644
--- a/src/libstore/daemon.cc
+++ b/src/libstore/daemon.cc
@@ -688,7 +688,7 @@ static void performOp(TunnelLogger * logger, ref<Store> store,
auto path = store->parseStorePath(readString(from));
logger->startWork();
logger->stopWork();
- dumpPath(store->printStorePath(path), to);
+ dumpPath(store->toRealPath(store->printStorePath(path)), to);
break;
}
diff --git a/tests/build-hook.nix b/tests/build-hook.nix
index 1bd0b759f..eb16676f0 100644
--- a/tests/build-hook.nix
+++ b/tests/build-hook.nix
@@ -26,6 +26,16 @@ let
requiredSystemFeatures = ["bar"];
};
+ input3 = mkDerivation {
+ shell = busybox;
+ name = "build-remote-input-3";
+ buildCommand = ''
+ read x < ${input2}
+ echo $x BAZ > $out
+ '';
+ requiredSystemFeatures = ["baz"];
+ };
+
in
mkDerivation {
@@ -34,7 +44,7 @@ in
buildCommand =
''
read x < ${input1}
- read y < ${input2}
+ read y < ${input3}
echo "$x $y" > $out
'';
}
diff --git a/tests/build-remote.sh b/tests/build-remote.sh
index 7638f536f..8833f4698 100644
--- a/tests/build-remote.sh
+++ b/tests/build-remote.sh
@@ -13,6 +13,7 @@ builders=(
# remote-store URL.
"ssh://localhost?remote-store=$TEST_ROOT/machine1?system-features=foo - - 1 1 foo"
"$TEST_ROOT/machine2 - - 1 1 bar"
+ "ssh-ng://localhost?remote-store=$TEST_ROOT/machine3?system-features=baz - - 1 1 baz"
)
# Note: ssh://localhost bypasses ssh, directly invoking nix-store as a
@@ -25,12 +26,24 @@ nix build -L -v -f build-hook.nix -o $TEST_ROOT/result --max-jobs 0 \
outPath=$(readlink -f $TEST_ROOT/result)
-grep 'FOO BAR' $TEST_ROOT/machine0/$outPath
+grep 'FOO BAR BAZ' $TEST_ROOT/machine0/$outPath
+
+set -o pipefail
# Ensure that input1 was built on store1 due to the required feature.
-(! nix path-info --store $TEST_ROOT/machine2 --all | grep builder-build-remote-input-1.sh)
-nix path-info --store $TEST_ROOT/machine1 --all | grep builder-build-remote-input-1.sh
+nix path-info --store $TEST_ROOT/machine1 --all \
+ | grep builder-build-remote-input-1.sh \
+ | grep -v builder-build-remote-input-2.sh \
+ | grep -v builder-build-remote-input-3.sh
# Ensure that input2 was built on store2 due to the required feature.
-(! nix path-info --store $TEST_ROOT/machine1 --all | grep builder-build-remote-input-2.sh)
-nix path-info --store $TEST_ROOT/machine2 --all | grep builder-build-remote-input-2.sh
+nix path-info --store $TEST_ROOT/machine2 --all \
+ | grep -v builder-build-remote-input-1.sh \
+ | grep builder-build-remote-input-2.sh \
+ | grep -v builder-build-remote-input-3.sh
+
+# Ensure that input3 was built on store3 due to the required feature.
+nix path-info --store $TEST_ROOT/machine3 --all \
+ | grep -v builder-build-remote-input-1.sh \
+ | grep -v builder-build-remote-input-2.sh \
+ | grep builder-build-remote-input-3.sh