tests: Test #4197 nix-build output order regression
This commit is contained in:
parent
ac5081d280
commit
d264da8d96
2 changed files with 48 additions and 0 deletions
33
tests/nix-build-examples.nix
Normal file
33
tests/nix-build-examples.nix
Normal file
|
@ -0,0 +1,33 @@
|
|||
with import ./config.nix;
|
||||
|
||||
rec {
|
||||
|
||||
input0 = mkDerivation {
|
||||
name = "dependencies-input-0";
|
||||
buildCommand = "mkdir $out; echo foo > $out/bar";
|
||||
};
|
||||
|
||||
input1 = mkDerivation {
|
||||
name = "dependencies-input-1";
|
||||
buildCommand = "mkdir $out; echo FOO > $out/foo";
|
||||
};
|
||||
|
||||
input2 = mkDerivation {
|
||||
name = "dependencies-input-2";
|
||||
buildCommand = ''
|
||||
mkdir $out
|
||||
echo BAR > $out/bar
|
||||
echo ${input0} > $out/input0
|
||||
'';
|
||||
};
|
||||
|
||||
body = mkDerivation {
|
||||
name = "dependencies-top";
|
||||
builder = ./dependencies.builder0.sh + "/FOOBAR/../.";
|
||||
input1 = input1 + "/.";
|
||||
input2 = "${input2}/.";
|
||||
input1_drv = input1;
|
||||
meta.description = "Random test package";
|
||||
};
|
||||
|
||||
}
|
|
@ -26,3 +26,18 @@ outPath2=$(nix-build $(nix-instantiate dependencies.nix)!out --no-out-link)
|
|||
|
||||
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)"
|
||||
|
||||
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
|
||||
outPathsB="$(echo $(nix-build nix-build-examples.nix -A body -A input1 -A input2 -A input0 --no-out-link))"
|
||||
[[ "$outPathsB" = "$body $input1 $input2 $input0" ]]
|
||||
|
|
Loading…
Reference in a new issue