1
1
Fork 0
mirror of https://github.com/NixOS/nix.git synced 2025-11-09 03:56:01 +01:00

shellcheck fix: tests/functional/impure-derivations.sh

This commit is contained in:
Farid Zakaria 2025-09-29 09:25:07 -07:00
parent f3a2876c3a
commit 1cd96f22c0
2 changed files with 23 additions and 24 deletions

View file

@ -106,7 +106,6 @@
enable = true; enable = true;
excludes = [ excludes = [
# We haven't linted these files yet # We haven't linted these files yet
''^tests/functional/impure-derivations\.sh$''
''^tests/functional/impure-eval\.sh$'' ''^tests/functional/impure-eval\.sh$''
''^tests/functional/install-darwin\.sh$'' ''^tests/functional/install-darwin\.sh$''
''^tests/functional/legacy-ssh-store\.sh$'' ''^tests/functional/legacy-ssh-store\.sh$''

View file

@ -12,62 +12,62 @@ restartDaemon
clearStoreIfPossible clearStoreIfPossible
# Basic test of impure derivations: building one a second time should not use the previous result. # Basic test of impure derivations: building one a second time should not use the previous result.
printf 0 > $TEST_ROOT/counter printf 0 > "$TEST_ROOT"/counter
# `nix derivation add` with impure derivations work # `nix derivation add` with impure derivations work
drvPath=$(nix-instantiate ./impure-derivations.nix -A impure) drvPath=$(nix-instantiate ./impure-derivations.nix -A impure)
nix derivation show $drvPath | jq .[] > $TEST_HOME/impure-drv.json nix derivation show "$drvPath" | jq .[] > "$TEST_HOME"/impure-drv.json
drvPath2=$(nix derivation add < $TEST_HOME/impure-drv.json) drvPath2=$(nix derivation add < "$TEST_HOME"/impure-drv.json)
[[ "$drvPath" = "$drvPath2" ]] [[ "$drvPath" = "$drvPath2" ]]
# But only with the experimental feature! # But only with the experimental feature!
expectStderr 1 nix derivation add < $TEST_HOME/impure-drv.json --experimental-features nix-command | grepQuiet "experimental Nix feature 'impure-derivations' is disabled" expectStderr 1 nix derivation add < "$TEST_HOME"/impure-drv.json --experimental-features nix-command | grepQuiet "experimental Nix feature 'impure-derivations' is disabled"
nix build --dry-run --json --file ./impure-derivations.nix impure.all nix build --dry-run --json --file ./impure-derivations.nix impure.all
json=$(nix build -L --no-link --json --file ./impure-derivations.nix impure.all) json=$(nix build -L --no-link --json --file ./impure-derivations.nix impure.all)
path1=$(echo $json | jq -r .[].outputs.out) path1=$(echo "$json" | jq -r .[].outputs.out)
path1_stuff=$(echo $json | jq -r .[].outputs.stuff) path1_stuff=$(echo "$json" | jq -r .[].outputs.stuff)
[[ $(< $path1/n) = 0 ]] [[ $(< "$path1"/n) = 0 ]]
[[ $(< $path1_stuff/bla) = 0 ]] [[ $(< "$path1_stuff"/bla) = 0 ]]
[[ $(nix path-info --json $path1 | jq .[].ca) =~ fixed:r:sha256: ]] [[ $(nix path-info --json "$path1" | jq .[].ca) =~ fixed:r:sha256: ]]
path2=$(nix build -L --no-link --json --file ./impure-derivations.nix impure | jq -r .[].outputs.out) path2=$(nix build -L --no-link --json --file ./impure-derivations.nix impure | jq -r .[].outputs.out)
[[ $(< $path2/n) = 1 ]] [[ $(< "$path2"/n) = 1 ]]
# Test impure derivations that depend on impure derivations. # Test impure derivations that depend on impure derivations.
path3=$(nix build -L --no-link --json --file ./impure-derivations.nix impureOnImpure | jq -r .[].outputs.out) path3=$(nix build -L --no-link --json --file ./impure-derivations.nix impureOnImpure | jq -r .[].outputs.out)
[[ $(< $path3/n) = X2 ]] [[ $(< "$path3"/n) = X2 ]]
path4=$(nix build -L --no-link --json --file ./impure-derivations.nix impureOnImpure | jq -r .[].outputs.out) path4=$(nix build -L --no-link --json --file ./impure-derivations.nix impureOnImpure | jq -r .[].outputs.out)
[[ $(< $path4/n) = X3 ]] [[ $(< "$path4"/n) = X3 ]]
# Test that (self-)references work. # Test that (self-)references work.
[[ $(< $path4/symlink/bla) = 3 ]] [[ $(< "$path4"/symlink/bla) = 3 ]]
[[ $(< $path4/self/n) = X3 ]] [[ $(< "$path4"/self/n) = X3 ]]
# Input-addressed derivations cannot depend on impure derivations directly. # Input-addressed derivations cannot depend on impure derivations directly.
(! nix build -L --no-link --json --file ./impure-derivations.nix inputAddressed 2>&1) | grep 'depends on impure derivation' (! nix build -L --no-link --json --file ./impure-derivations.nix inputAddressed 2>&1) | grep 'depends on impure derivation'
drvPath=$(nix eval --json --file ./impure-derivations.nix impure.drvPath | jq -r .) drvPath=$(nix eval --json --file ./impure-derivations.nix impure.drvPath | jq -r .)
[[ $(nix derivation show $drvPath | jq ".[\"$(basename "$drvPath")\"].outputs.out.impure") = true ]] [[ $(nix derivation show "$drvPath" | jq ".[\"$(basename "$drvPath")\"].outputs.out.impure") = true ]]
[[ $(nix derivation show $drvPath | jq ".[\"$(basename "$drvPath")\"].outputs.stuff.impure") = true ]] [[ $(nix derivation show "$drvPath" | jq ".[\"$(basename "$drvPath")\"].outputs.stuff.impure") = true ]]
# Fixed-output derivations *can* depend on impure derivations. # Fixed-output derivations *can* depend on impure derivations.
path5=$(nix build -L --no-link --json --file ./impure-derivations.nix contentAddressed | jq -r .[].outputs.out) path5=$(nix build -L --no-link --json --file ./impure-derivations.nix contentAddressed | jq -r .[].outputs.out)
[[ $(< $path5) = X ]] [[ $(< "$path5") = X ]]
[[ $(< $TEST_ROOT/counter) = 5 ]] [[ $(< "$TEST_ROOT"/counter) = 5 ]]
# And they should not be rebuilt. # And they should not be rebuilt.
path5=$(nix build -L --no-link --json --file ./impure-derivations.nix contentAddressed | jq -r .[].outputs.out) path5=$(nix build -L --no-link --json --file ./impure-derivations.nix contentAddressed | jq -r .[].outputs.out)
[[ $(< $path5) = X ]] [[ $(< "$path5") = X ]]
[[ $(< $TEST_ROOT/counter) = 5 ]] [[ $(< "$TEST_ROOT"/counter) = 5 ]]
# Input-addressed derivations can depend on fixed-output derivations that depend on impure derivations. # Input-addressed derivations can depend on fixed-output derivations that depend on impure derivations.
path6=$(nix build -L --no-link --json --file ./impure-derivations.nix inputAddressedAfterCA | jq -r .[].outputs.out) path6=$(nix build -L --no-link --json --file ./impure-derivations.nix inputAddressedAfterCA | jq -r .[].outputs.out)
[[ $(< $path6) = X ]] [[ $(< "$path6") = X ]]
[[ $(< $TEST_ROOT/counter) = 5 ]] [[ $(< "$TEST_ROOT"/counter) = 5 ]]
# Test nix/fetchurl.nix. # Test nix/fetchurl.nix.
path7=$(nix build -L --no-link --print-out-paths --expr "import <nix/fetchurl.nix> { impure = true; url = file://$PWD/impure-derivations.sh; }") path7=$(nix build -L --no-link --print-out-paths --expr "import <nix/fetchurl.nix> { impure = true; url = file://$PWD/impure-derivations.sh; }")
cmp $path7 $PWD/impure-derivations.sh cmp "$path7" "$PWD"/impure-derivations.sh