aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2011-12-21 13:47:21 +0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2011-12-21 13:47:21 +0000
commit179409b9112ee9d9f858a124e0b109a46fe835c9 (patch)
treeb7ff9b07510defc768d7fce77a4263918bd4630f /tests
parentedd9359bebe012ae40e9e1538dab8f91e2d58d3e (diff)
* Add a test for referring to another derivation's ‘drvPath’. This
currently fails in read-only mode.
Diffstat (limited to 'tests')
-rw-r--r--tests/multiple-outputs.nix10
-rw-r--r--tests/multiple-outputs.sh20
2 files changed, 29 insertions, 1 deletions
diff --git a/tests/multiple-outputs.nix b/tests/multiple-outputs.nix
index 7be96703d..9ce1f3dcf 100644
--- a/tests/multiple-outputs.nix
+++ b/tests/multiple-outputs.nix
@@ -32,6 +32,16 @@ rec {
'';
};
+ c = mkDerivation {
+ name = "multiple-outputs-c";
+ drv = b.drvPath;
+ builder = builtins.toFile "builder.sh"
+ ''
+ mkdir $out
+ ln -s $drv $out/drv
+ '';
+ };
+
cyclic = (mkDerivation {
name = "cyclic-outputs";
outputs = [ "a" "b" ];
diff --git a/tests/multiple-outputs.sh b/tests/multiple-outputs.sh
index 8a7ae2236..aa328fdbc 100644
--- a/tests/multiple-outputs.sh
+++ b/tests/multiple-outputs.sh
@@ -1,18 +1,36 @@
source common.sh
-echo "Testing multiple outputs..."
+clearStore
+# Test whether read-only evaluation works when referring to the
+# ‘drvPath’ attribute.
+echo "evaluating c..."
+drvPath=$(nix-instantiate multiple-outputs.nix -A c --readonly-mode)
+
+# And check whether the resulting derivation explicitly depends on all
+# outputs.
+drvPath2=$(nix-instantiate multiple-outputs.nix -A c)
+[ "$drvPath" = "$drvPath2" ]
+grep -q 'multiple-outputs-a.drv",\["first","second"\]' $drvPath
+grep -q 'multiple-outputs-b.drv",\["out"\]' $drvPath
+
+# Do a build of something that depends on a derivation with multiple
+# outputs.
+echo "building b..."
outPath=$(nix-build multiple-outputs.nix -A b)
echo "output path is $outPath"
[ "$(cat "$outPath"/file)" = "success" ]
# Make sure that nix-build works on derivations with multiple outputs.
+echo "building a.first..."
nix-build multiple-outputs.nix -A a.first
# Cyclic outputs should be rejected.
+echo "building cyclic..."
if nix-build multiple-outputs.nix -A cyclic; then
echo "Cyclic outputs incorrectly accepted!"
exit 1
fi
+echo "collecting garbage..."
nix-store --gc