Skip to content

Commit 56ee965

Browse files
René Scharfegitster
authored andcommitted
t5004: resurrect original empty tar archive test
Add a test to verify the emptiness of an archive by extracting its contents. Don't run this test if the version of tar doesn't support archives containing only a comment header, though. The existing check 'tar archive of empty tree is empty' used to work like that (minus the tar capability check) but was changed to depend on the exact representation of empty tar files created by git archive instead of on the behaviour of tar in order to avoid issues with different tar versions. The different approaches test different things: The existing one is for empty trees, for which we know the exact expected output and thus we can simply check it without extracting; the new one is for commits with empty trees, whose archives include stamps and so the more "natural" check by extraction is a better fit because it focuses on the interesting aspect, namely the absence of any archive entries. Signed-off-by: Rene Scharfe <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 71a19a3 commit 56ee965

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

t/t5004-archive-corner-cases.sh

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,20 @@ check_dir() {
2727
test_cmp expect actual
2828
}
2929

30+
# bsdtar/libarchive versions before 3.1.3 consider a tar file with a
31+
# global pax header that is not followed by a file record as corrupt.
32+
if "$TAR" tf "$TEST_DIRECTORY"/t5004/empty-with-pax-header.tar >/dev/null 2>&1
33+
then
34+
test_set_prereq HEADER_ONLY_TAR_OK
35+
fi
36+
37+
test_expect_success HEADER_ONLY_TAR_OK 'tar archive of commit with empty tree' '
38+
git archive --format=tar HEAD >empty-with-pax-header.tar &&
39+
make_dir extract &&
40+
"$TAR" xf empty-with-pax-header.tar -C extract &&
41+
check_dir extract
42+
'
43+
3044
test_expect_success 'tar archive of empty tree is empty' '
3145
git archive --format=tar HEAD: >empty.tar &&
3246
perl -e "print \"\\0\" x 10240" >10knuls.tar &&

t/t5004/empty-with-pax-header.tar

10 KB
Binary file not shown.

0 commit comments

Comments
 (0)