mirror of
https://github.com/NixOS/nix
synced 2025-07-04 23:51:47 +02:00
Add test case for NARs with duplicate directory entries
This test was made by @puckipedia.
(cherry picked from commit 83d5b32803
)
This commit is contained in:
parent
49f21a860f
commit
f9b3defe7f
4 changed files with 24 additions and 22 deletions
|
@ -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)
|
|
BIN
tests/functional/duplicate.nar
Normal file
BIN
tests/functional/duplicate.nar
Normal file
Binary file not shown.
|
@ -108,7 +108,7 @@ nix_tests = \
|
||||||
derivation-json.sh \
|
derivation-json.sh \
|
||||||
import-derivation.sh \
|
import-derivation.sh \
|
||||||
nix_path.sh \
|
nix_path.sh \
|
||||||
case-hack.sh \
|
nars.sh \
|
||||||
placeholders.sh \
|
placeholders.sh \
|
||||||
ssh-relay.sh \
|
ssh-relay.sh \
|
||||||
build.sh \
|
build.sh \
|
||||||
|
|
23
tests/functional/nars.sh
Executable file
23
tests/functional/nars.sh
Executable file
|
@ -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)
|
Loading…
Add table
Add a link
Reference in a new issue