forked from lix-project/lix
Test nix build --json
return output paths in floating CA case
Adding a test to ensure there is no regression. The tests that are split out of `tests/build.sh` are ones that don't yet work with CA derivation. I have not yet evaluated whether they should or not. This behavior, reported missing in issue #4661, already got fixed in PR #4818, but didn't get a test case then.
This commit is contained in:
parent
c184566046
commit
55016b6fcd
56
tests/build-delete.sh
Normal file
56
tests/build-delete.sh
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
source common.sh
|
||||||
|
|
||||||
|
clearStore
|
||||||
|
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
# https://github.com/NixOS/nix/issues/6572
|
||||||
|
issue_6572_independent_outputs() {
|
||||||
|
nix build -f multiple-outputs.nix --json independent --no-link > $TEST_ROOT/independent.json
|
||||||
|
|
||||||
|
# Make sure that 'nix build' can build a derivation that depends on both outputs of another derivation.
|
||||||
|
p=$(nix build -f multiple-outputs.nix use-independent --no-link --print-out-paths)
|
||||||
|
nix-store --delete "$p" # Clean up for next test
|
||||||
|
|
||||||
|
# Make sure that 'nix build' tracks input-outputs correctly when a single output is already present.
|
||||||
|
nix-store --delete "$(jq -r <$TEST_ROOT/independent.json .[0].outputs.first)"
|
||||||
|
p=$(nix build -f multiple-outputs.nix use-independent --no-link --print-out-paths)
|
||||||
|
cmp $p <<EOF
|
||||||
|
first
|
||||||
|
second
|
||||||
|
EOF
|
||||||
|
nix-store --delete "$p" # Clean up for next test
|
||||||
|
|
||||||
|
# Make sure that 'nix build' tracks input-outputs correctly when a single output is already present.
|
||||||
|
nix-store --delete "$(jq -r <$TEST_ROOT/independent.json .[0].outputs.second)"
|
||||||
|
p=$(nix build -f multiple-outputs.nix use-independent --no-link --print-out-paths)
|
||||||
|
cmp $p <<EOF
|
||||||
|
first
|
||||||
|
second
|
||||||
|
EOF
|
||||||
|
nix-store --delete "$p" # Clean up for next test
|
||||||
|
}
|
||||||
|
issue_6572_independent_outputs
|
||||||
|
|
||||||
|
|
||||||
|
# https://github.com/NixOS/nix/issues/6572
|
||||||
|
issue_6572_dependent_outputs() {
|
||||||
|
|
||||||
|
nix build -f multiple-outputs.nix --json a --no-link > $TEST_ROOT/a.json
|
||||||
|
|
||||||
|
# # Make sure that 'nix build' can build a derivation that depends on both outputs of another derivation.
|
||||||
|
p=$(nix build -f multiple-outputs.nix use-a --no-link --print-out-paths)
|
||||||
|
nix-store --delete "$p" # Clean up for next test
|
||||||
|
|
||||||
|
# Make sure that 'nix build' tracks input-outputs correctly when a single output is already present.
|
||||||
|
nix-store --delete "$(jq -r <$TEST_ROOT/a.json .[0].outputs.second)"
|
||||||
|
p=$(nix build -f multiple-outputs.nix use-a --no-link --print-out-paths)
|
||||||
|
cmp $p <<EOF
|
||||||
|
first
|
||||||
|
second
|
||||||
|
EOF
|
||||||
|
nix-store --delete "$p" # Clean up for next test
|
||||||
|
}
|
||||||
|
if isDaemonNewer "2.12pre0"; then
|
||||||
|
issue_6572_dependent_outputs
|
||||||
|
fi
|
|
@ -107,62 +107,3 @@ nix build --impure -f multiple-outputs.nix --json e --no-link | jq --exit-status
|
||||||
(.drvPath | match(".*multiple-outputs-e.drv")) and
|
(.drvPath | match(".*multiple-outputs-e.drv")) and
|
||||||
(.outputs | keys == ["a_a", "b"]))
|
(.outputs | keys == ["a_a", "b"]))
|
||||||
'
|
'
|
||||||
|
|
||||||
testNormalization () {
|
|
||||||
clearStore
|
|
||||||
outPath=$(nix-build ./simple.nix --no-out-link)
|
|
||||||
test "$(stat -c %Y $outPath)" -eq 1
|
|
||||||
}
|
|
||||||
|
|
||||||
testNormalization
|
|
||||||
|
|
||||||
# https://github.com/NixOS/nix/issues/6572
|
|
||||||
issue_6572_independent_outputs() {
|
|
||||||
nix build -f multiple-outputs.nix --json independent --no-link > $TEST_ROOT/independent.json
|
|
||||||
|
|
||||||
# Make sure that 'nix build' can build a derivation that depends on both outputs of another derivation.
|
|
||||||
p=$(nix build -f multiple-outputs.nix use-independent --no-link --print-out-paths)
|
|
||||||
nix-store --delete "$p" # Clean up for next test
|
|
||||||
|
|
||||||
# Make sure that 'nix build' tracks input-outputs correctly when a single output is already present.
|
|
||||||
nix-store --delete "$(jq -r <$TEST_ROOT/independent.json .[0].outputs.first)"
|
|
||||||
p=$(nix build -f multiple-outputs.nix use-independent --no-link --print-out-paths)
|
|
||||||
cmp $p <<EOF
|
|
||||||
first
|
|
||||||
second
|
|
||||||
EOF
|
|
||||||
nix-store --delete "$p" # Clean up for next test
|
|
||||||
|
|
||||||
# Make sure that 'nix build' tracks input-outputs correctly when a single output is already present.
|
|
||||||
nix-store --delete "$(jq -r <$TEST_ROOT/independent.json .[0].outputs.second)"
|
|
||||||
p=$(nix build -f multiple-outputs.nix use-independent --no-link --print-out-paths)
|
|
||||||
cmp $p <<EOF
|
|
||||||
first
|
|
||||||
second
|
|
||||||
EOF
|
|
||||||
nix-store --delete "$p" # Clean up for next test
|
|
||||||
}
|
|
||||||
issue_6572_independent_outputs
|
|
||||||
|
|
||||||
|
|
||||||
# https://github.com/NixOS/nix/issues/6572
|
|
||||||
issue_6572_dependent_outputs() {
|
|
||||||
|
|
||||||
nix build -f multiple-outputs.nix --json a --no-link > $TEST_ROOT/a.json
|
|
||||||
|
|
||||||
# # Make sure that 'nix build' can build a derivation that depends on both outputs of another derivation.
|
|
||||||
p=$(nix build -f multiple-outputs.nix use-a --no-link --print-out-paths)
|
|
||||||
nix-store --delete "$p" # Clean up for next test
|
|
||||||
|
|
||||||
# Make sure that 'nix build' tracks input-outputs correctly when a single output is already present.
|
|
||||||
nix-store --delete "$(jq -r <$TEST_ROOT/a.json .[0].outputs.second)"
|
|
||||||
p=$(nix build -f multiple-outputs.nix use-a --no-link --print-out-paths)
|
|
||||||
cmp $p <<EOF
|
|
||||||
first
|
|
||||||
second
|
|
||||||
EOF
|
|
||||||
nix-store --delete "$p" # Clean up for next test
|
|
||||||
}
|
|
||||||
if isDaemonNewer "2.12pre0"; then
|
|
||||||
issue_6572_dependent_outputs
|
|
||||||
fi
|
|
||||||
|
|
5
tests/ca/new-build-cmd.sh
Normal file
5
tests/ca/new-build-cmd.sh
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
source common.sh
|
||||||
|
|
||||||
|
export NIX_TESTS_CA_BY_DEFAULT=1
|
||||||
|
cd ..
|
||||||
|
source ./build.sh
|
|
@ -7,5 +7,3 @@ requireDaemonNewerThan "2.4pre20210623"
|
||||||
export NIX_TESTS_CA_BY_DEFAULT=1
|
export NIX_TESTS_CA_BY_DEFAULT=1
|
||||||
cd ..
|
cd ..
|
||||||
source ./recursive.sh
|
source ./recursive.sh
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@ nix_tests = \
|
||||||
binary-cache.sh \
|
binary-cache.sh \
|
||||||
multiple-outputs.sh \
|
multiple-outputs.sh \
|
||||||
ca/build.sh \
|
ca/build.sh \
|
||||||
|
ca/new-build-cmd.sh \
|
||||||
nix-build.sh \
|
nix-build.sh \
|
||||||
gc-concurrent.sh \
|
gc-concurrent.sh \
|
||||||
repair.sh \
|
repair.sh \
|
||||||
|
@ -103,6 +104,8 @@ nix_tests = \
|
||||||
ssh-relay.sh \
|
ssh-relay.sh \
|
||||||
plugins.sh \
|
plugins.sh \
|
||||||
build.sh \
|
build.sh \
|
||||||
|
build-delete.sh \
|
||||||
|
output-normalization.sh \
|
||||||
ca/nix-run.sh \
|
ca/nix-run.sh \
|
||||||
selfref-gc.sh ca/selfref-gc.sh \
|
selfref-gc.sh ca/selfref-gc.sh \
|
||||||
db-migration.sh \
|
db-migration.sh \
|
||||||
|
|
9
tests/output-normalization.sh
Normal file
9
tests/output-normalization.sh
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
source common.sh
|
||||||
|
|
||||||
|
testNormalization () {
|
||||||
|
clearStore
|
||||||
|
outPath=$(nix-build ./simple.nix --no-out-link)
|
||||||
|
test "$(stat -c %Y $outPath)" -eq 1
|
||||||
|
}
|
||||||
|
|
||||||
|
testNormalization
|
Loading…
Reference in a new issue