1
1
Fork 0
mirror of https://github.com/NixOS/nix.git synced 2025-11-08 19:46:02 +01:00
nix/tests/functional/nix-build.sh
2025-09-29 10:52:17 -07:00

49 lines
1.6 KiB
Bash
Executable file

#!/usr/bin/env bash
source common.sh
TODO_NixOS
clearStoreIfPossible
outPath=$(nix-build dependencies.nix -o "$TEST_ROOT"/result)
test "$(cat "$TEST_ROOT"/result/foobar)" = FOOBAR
# The result should be retained by a GC.
echo A
target=$(readLink "$TEST_ROOT"/result)
echo B
echo target is "$target"
nix-store --gc
test -e "$target"/foobar
# But now it should be gone.
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" ]]
outPath2=$(nix-store -r "$(nix-instantiate --add-root "$TEST_ROOT"/indirect dependencies.nix)"!out)
[[ $outPath = "$outPath2" ]]
# The order of the paths on stdout must correspond to the -A options
# https://github.com/NixOS/nix/issues/4197
input0="$(nix-build nix-build-examples.nix -A input0 --no-out-link)"
input1="$(nix-build nix-build-examples.nix -A input1 --no-out-link)"
input2="$(nix-build nix-build-examples.nix -A input2 --no-out-link)"
body="$(nix-build nix-build-examples.nix -A body --no-out-link)"
# shellcheck disable=SC2046,SC2005
outPathsA="$(echo $(nix-build nix-build-examples.nix -A input0 -A input1 -A input2 -A body --no-out-link))"
[[ "$outPathsA" = "$input0 $input1 $input2 $body" ]]
# test a different ordering to make sure it fails, not just in 23 out of 24 permutations
# shellcheck disable=SC2046,SC2005
outPathsB="$(echo $(nix-build nix-build-examples.nix -A body -A input1 -A input2 -A input0 --no-out-link))"
[[ "$outPathsB" = "$body $input1 $input2 $input0" ]]