diff --git a/tests/functional/case-hack.sh b/tests/functional/case-hack.sh deleted file mode 100755 index fbc8242ff..000000000 --- a/tests/functional/case-hack.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash - -source common.sh - -clearStore - -rm -rf $TEST_ROOT/case - -opts="--option use-case-hack true" - -# Check whether restoring and dumping a NAR that contains case -# collisions is round-tripping, even on a case-insensitive system. -nix-store $opts --restore $TEST_ROOT/case < case.nar -nix-store $opts --dump $TEST_ROOT/case > $TEST_ROOT/case.nar -cmp case.nar $TEST_ROOT/case.nar -[ "$(nix-hash $opts --type sha256 $TEST_ROOT/case)" = "$(nix-hash --flat --type sha256 case.nar)" ] - -# Check whether we detect true collisions (e.g. those remaining after -# removal of the suffix). -touch "$TEST_ROOT/case/xt_CONNMARK.h~nix~case~hack~3" -(! nix-store $opts --dump $TEST_ROOT/case > /dev/null) diff --git a/tests/functional/duplicate.nar b/tests/functional/duplicate.nar new file mode 100644 index 000000000..1d0993ed4 Binary files /dev/null and b/tests/functional/duplicate.nar differ diff --git a/tests/functional/local.mk b/tests/functional/local.mk index b379eeefe..bdb47c2db 100644 --- a/tests/functional/local.mk +++ b/tests/functional/local.mk @@ -108,7 +108,7 @@ nix_tests = \ derivation-json.sh \ import-derivation.sh \ nix_path.sh \ - case-hack.sh \ + nars.sh \ placeholders.sh \ ssh-relay.sh \ build.sh \ diff --git a/tests/functional/nars.sh b/tests/functional/nars.sh new file mode 100755 index 000000000..ba5a69bd2 --- /dev/null +++ b/tests/functional/nars.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +source common.sh + +clearStore + +# Check that NARs with duplicate directory entries are rejected. +rm -rf "$TEST_ROOT/out" +expectStderr 1 nix-store --restore "$TEST_ROOT/out" < duplicate.nar | grepQuiet "NAR directory is not sorted" + +# Check whether restoring and dumping a NAR that contains case +# collisions is round-tripping, even on a case-insensitive system. +rm -rf "$TEST_ROOT/case" +opts=("--option" "use-case-hack" "true") +nix-store "${opts[@]}" --restore "$TEST_ROOT/case" < case.nar +nix-store "${opts[@]}" --dump "$TEST_ROOT/case" > "$TEST_ROOT/case.nar" +cmp case.nar "$TEST_ROOT/case.nar" +[ "$(nix-hash "${opts[@]}" --type sha256 "$TEST_ROOT/case")" = "$(nix-hash --flat --type sha256 case.nar)" ] + +# Check whether we detect true collisions (e.g. those remaining after +# removal of the suffix). +touch "$TEST_ROOT/case/xt_CONNMARK.h~nix~case~hack~3" +(! nix-store $opts --dump $TEST_ROOT/case > /dev/null)