1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-07-10 04:43:53 +02:00

nix-shell/nix-build: Support .drv files again

Fixes #1663.

Also handle '!<output-name>' (#1694).
This commit is contained in:
Eelco Dolstra 2017-11-24 18:07:29 +01:00
parent 0fc3e581e0
commit 90948a4e3a
No known key found for this signature in database
GPG key ID: 8170B4726D7198DE
6 changed files with 61 additions and 4 deletions

View file

@ -2,6 +2,8 @@ source common.sh
clearStore
rm -f $TEST_ROOT/result*
# Test whether read-only evaluation works when referring to the
# drvPath attribute.
echo "evaluating c..."
@ -28,7 +30,7 @@ echo "output path is $outPath"
[ "$(cat "$outPath"/file)" = "success" ]
# Test nix-build on a derivation with multiple outputs.
nix-build multiple-outputs.nix -A a -o $TEST_ROOT/result
outPath1=$(nix-build multiple-outputs.nix -A a -o $TEST_ROOT/result)
[ -e $TEST_ROOT/result-first ]
(! [ -e $TEST_ROOT/result-second ])
nix-build multiple-outputs.nix -A a.all -o $TEST_ROOT/result
@ -37,6 +39,17 @@ nix-build multiple-outputs.nix -A a.all -o $TEST_ROOT/result
[ "$(cat $TEST_ROOT/result-second/link/file)" = "first" ]
hash1=$(nix-store -q --hash $TEST_ROOT/result-second)
outPath2=$(nix-build $(nix-instantiate multiple-outputs.nix -A a) --no-out-link)
[[ $outPath1 = $outPath2 ]]
outPath2=$(nix-build $(nix-instantiate multiple-outputs.nix -A a.first) --no-out-link)
[[ $outPath1 = $outPath2 ]]
outPath2=$(nix-build $(nix-instantiate multiple-outputs.nix -A a.second) --no-out-link)
[[ $(cat $outPath2/file) = second ]]
[[ $(nix-build $(nix-instantiate multiple-outputs.nix -A a.all) --no-out-link | wc -l) -eq 2 ]]
# Delete one of the outputs and rebuild it. This will cause a hash
# rewrite.
nix-store --delete $TEST_ROOT/result-second --ignore-liveness

View file

@ -2,7 +2,7 @@ source common.sh
clearStore
nix-build dependencies.nix -o $TEST_ROOT/result
outPath=$(nix-build dependencies.nix -o $TEST_ROOT/result)
test "$(cat $TEST_ROOT/result/foobar)" = FOOBAR
# The result should be retained by a GC.
@ -17,3 +17,9 @@ test -e $target/foobar
rm $TEST_ROOT/result
nix-store --gc
if test -e $target/foobar; then false; fi
outPath2=$(nix-build $(nix-instantiate dependencies.nix) --no-out-link)
[[ $outPath = $outPath2 ]]
outPath2=$(nix-build $(nix-instantiate dependencies.nix)!out --no-out-link)
[[ $outPath = $outPath2 ]]

View file

@ -10,6 +10,13 @@ output=$(nix-shell --pure shell.nix -A shellDrv --run \
[ "$output" = " - foo - bar" ]
# Test nix-shell on a .drv
[[ $(nix-shell --pure $(nix-instantiate shell.nix -A shellDrv) --run \
'echo "$IMPURE_VAR - $VAR_FROM_STDENV_SETUP - $VAR_FROM_NIX"') = " - foo - bar" ]]
[[ $(nix-shell --pure $(nix-instantiate shell.nix -A shellDrv) --run \
'echo "$IMPURE_VAR - $VAR_FROM_STDENV_SETUP - $VAR_FROM_NIX"') = " - foo - bar" ]]
# Test nix-shell -p
output=$(NIX_PATH=nixpkgs=shell.nix nix-shell --pure -p foo bar --run 'echo "$(foo) $(bar)"')
[ "$output" = "foo bar" ]