aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libstore/local-store.cc3
-rwxr-xr-xtests/substituter.sh31
-rwxr-xr-xtests/substituter2.sh32
3 files changed, 36 insertions, 30 deletions
diff --git a/src/libstore/local-store.cc b/src/libstore/local-store.cc
index ebfcc9467..58ce691eb 100644
--- a/src/libstore/local-store.cc
+++ b/src/libstore/local-store.cc
@@ -999,7 +999,8 @@ void LocalStore::querySubstitutablePathInfos(const Path & substituter,
while (true) {
Path path = readLine(run.from);
if (path == "") break;
- assert(paths.find(path) != paths.end());
+ if (paths.find(path) == paths.end())
+ throw Error(format("got unexpected path `%1%' from substituter") % path);
paths.erase(path);
SubstitutablePathInfo & info(infos[path]);
info.deriver = readLine(run.from);
diff --git a/tests/substituter.sh b/tests/substituter.sh
index 65c4fa185..a6bdacfd6 100755
--- a/tests/substituter.sh
+++ b/tests/substituter.sh
@@ -2,22 +2,25 @@
echo substituter args: $* >&2
if test $1 = "--query"; then
- while read cmd; do
- echo FOO $cmd >&2
+ while read cmd args; do
+ echo "CMD = $cmd, ARGS = $args" >&2
if test "$cmd" = "have"; then
- read path
- if grep -q "$path" $TEST_ROOT/sub-paths; then
- echo 1
- else
- echo 0
- fi
+ for path in $args; do
+ read path
+ if grep -q "$path" $TEST_ROOT/sub-paths; then
+ echo $path
+ fi
+ done
+ echo
elif test "$cmd" = "info"; then
- read path
- echo 1
- echo "" # deriver
- echo 0 # nr of refs
- echo $((1 * 1024 * 1024)) # download size
- echo $((2 * 1024 * 1024)) # nar size
+ for path in $args; do
+ echo $path
+ echo "" # deriver
+ echo 0 # nr of refs
+ echo $((1 * 1024 * 1024)) # download size
+ echo $((2 * 1024 * 1024)) # nar size
+ done
+ echo
else
echo "bad command $cmd"
exit 1
diff --git a/tests/substituter2.sh b/tests/substituter2.sh
index c56a1bc47..34b2c0eaf 100755
--- a/tests/substituter2.sh
+++ b/tests/substituter2.sh
@@ -2,21 +2,23 @@
echo substituter2 args: $* >&2
if test $1 = "--query"; then
- while read cmd; do
- if test "$cmd" = "have"; then
- read path
- if grep -q "$path" $TEST_ROOT/sub-paths; then
- echo 1
- else
- echo 0
- fi
- elif test "$cmd" = "info"; then
- read path
- echo 1
- echo "" # deriver
- echo 0 # nr of refs
- echo 0 # download size
- echo 0 # nar size
+ while read cmd args; do
+ if test "$cmd" = have; then
+ for path in $args; do
+ if grep -q "$path" $TEST_ROOT/sub-paths; then
+ echo $path
+ fi
+ done
+ echo
+ elif test "$cmd" = info; then
+ for path in $args; do
+ echo $path
+ echo "" # deriver
+ echo 0 # nr of refs
+ echo 0 # download size
+ echo 0 # nar size
+ done
+ echo
else
echo "bad command $cmd"
exit 1