1
1
Fork 0
mirror of https://github.com/NixOS/nix.git synced 2025-11-08 19:46:02 +01:00

Merge pull request #14182 from NixOS/simplify-archive-tests

tests: Move invalid nar tests from tests/functional to libutil-tests
This commit is contained in:
John Ericson 2025-10-08 20:46:37 +00:00 committed by GitHub
commit bb1945a090
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 15 additions and 29 deletions

View file

@ -42,6 +42,20 @@ INSTANTIATE_TEST_SUITE_P(
NarTest,
InvalidNarTest,
::testing::Values(
std::pair{"invalid-tag-instead-of-contents", "bad archive: expected tag 'contents', got 'AAAAAAAA'"}));
std::pair{"invalid-tag-instead-of-contents", "bad archive: expected tag 'contents', got 'AAAAAAAA'"},
// Unpacking a NAR with a NUL character in a file name should fail.
std::pair{"nul-character", "bad archive: NAR contains invalid file name 'f"},
// Likewise for a '.' filename.
std::pair{"dot", "bad archive: NAR contains invalid file name '.'"},
// Likewise for a '..' filename.
std::pair{"dotdot", "bad archive: NAR contains invalid file name '..'"},
// Likewise for a filename containing a slash.
std::pair{"slash", "bad archive: NAR contains invalid file name 'x/y'"},
// Likewise for an empty filename.
std::pair{"empty", "bad archive: NAR contains invalid file name ''"},
// Test that the 'executable' field cannot come before the 'contents' field.
std::pair{"executable-after-contents", "bad archive: expected tag ')', got 'executable'"},
// Test that the 'name' field cannot come before the 'node' field in a directory entry.
std::pair{"name-after-node", "bad archive: expected tag 'name'"}));
} // namespace nix

View file

@ -131,31 +131,3 @@ else
fi
rm -f "$TEST_ROOT/unicode-*"
# Unpacking a NAR with a NUL character in a file name should fail.
rm -rf "$TEST_ROOT/out"
expectStderr 1 nix-store --restore "$TEST_ROOT/out" < nul-character.nar | grepQuiet "NAR contains invalid file name 'f"
# Likewise for a '.' filename.
rm -rf "$TEST_ROOT/out"
expectStderr 1 nix-store --restore "$TEST_ROOT/out" < dot.nar | grepQuiet "NAR contains invalid file name '.'"
# Likewise for a '..' filename.
rm -rf "$TEST_ROOT/out"
expectStderr 1 nix-store --restore "$TEST_ROOT/out" < dotdot.nar | grepQuiet "NAR contains invalid file name '..'"
# Likewise for a filename containing a slash.
rm -rf "$TEST_ROOT/out"
expectStderr 1 nix-store --restore "$TEST_ROOT/out" < slash.nar | grepQuiet "NAR contains invalid file name 'x/y'"
# Likewise for an empty filename.
rm -rf "$TEST_ROOT/out"
expectStderr 1 nix-store --restore "$TEST_ROOT/out" < empty.nar | grepQuiet "NAR contains invalid file name ''"
# Test that the 'executable' field cannot come before the 'contents' field.
rm -rf "$TEST_ROOT/out"
expectStderr 1 nix-store --restore "$TEST_ROOT/out" < executable-after-contents.nar | grepQuiet "expected tag ')', got 'executable'"
# Test that the 'name' field cannot come before the 'node' field in a directory entry.
rm -rf "$TEST_ROOT/out"
expectStderr 1 nix-store --restore "$TEST_ROOT/out" < name-after-node.nar | grepQuiet "expected tag 'name'"