about summary refs log tree commit diff
path: root/tests/fixed.sh
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2018-02-03T09·04+0100
committerEelco Dolstra <edolstra@gmail.com>2018-02-03T09·08+0100
commit84722d67d2b09b5c28e1c2d9dd438ba592df2296 (patch)
tree81f9563b7bd1440209a7a706a8646a9ff0af9e71 /tests/fixed.sh
parentde96daf54f3143753073314e0c0e23851c568633 (diff)
Remove nix-build --hash
Instead, if a fixed-output derivation produces has an incorrect output
hash, we now unconditionally move the outputs to the path
corresponding with the actual hash and register it as valid. Thus,
after correcting the hash in the Nix expression (e.g. in a fetchurl
call), the fixed-output derivation doesn't have to be built again.

It would still be good to have a command for reporting the actual hash
of a fixed-output derivation (instead of throwing an error), but
"nix-build --hash" didn't do that.
Diffstat (limited to '')
-rw-r--r--tests/fixed.sh13
1 files changed, 10 insertions, 3 deletions
diff --git a/tests/fixed.sh b/tests/fixed.sh
index cac3f0be91..8f51403a70 100644
--- a/tests/fixed.sh
+++ b/tests/fixed.sh
@@ -5,15 +5,22 @@ clearStore
 export IMPURE_VAR1=foo
 export IMPURE_VAR2=bar
 
+path=$(nix-store -q $(nix-instantiate fixed.nix -A good.0))
+
+echo 'testing bad...'
+nix-build fixed.nix -A bad --no-out-link && fail "should fail"
+
+# Building with the bad hash should produce the "good" output path as
+# a side-effect.
+[[ -e $path ]]
+nix path-info --json $path | grep fixed:md5:2qk15sxzzjlnpjk9brn7j8ppcd
+
 echo 'testing good...'
 nix-build fixed.nix -A good --no-out-link
 
 echo 'testing good2...'
 nix-build fixed.nix -A good2 --no-out-link
 
-echo 'testing bad...'
-nix-build fixed.nix -A bad --no-out-link && fail "should fail"
-
 echo 'testing reallyBad...'
 nix-instantiate fixed.nix -A reallyBad && fail "should fail"