summary refs log tree commit diff
path: root/gnu/packages/patches/libarchive-bsdtar-test.patch
blob: 6a533a9a07de06bec6596f0ad805ba035d13c5b0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
commit b539b2e597b566fe3c4b49cb61c9eef83e5e052d
Author: Pavel Raiskup <praiskup@redhat.com>
Date:   Thu Jun 27 16:01:30 2013 +0200

    Use ustar format in the test_option_b test
    
    .. because the ustar archive does not store SELinux context.  As the default
    format for bsdtar is "restricted pax" (trying to store xattrs and other
    things by default), the test failed on Fedora because our files have by
    default SELinux context set.  This results in additional data in tested
    archive ~> and the test failed because the archive was unexpectedly big:
    
     tar/test/test_option_b.c:41: File archive1.tar has size 3072, expected 2048
    
    Reviewed by Konrad Kleine <konrad.wilhelm.kleine@gmail.com>

diff --git a/tar/test/test_option_b.c b/tar/test/test_option_b.c
index be2ae65..6fea474 100644
--- a/tar/test/test_option_b.c
+++ b/tar/test/test_option_b.c
@@ -25,8 +25,14 @@
 #include "test.h"
 __FBSDID("$FreeBSD$");
 
+#define USTAR_OPT " --format=ustar"
+
 DEFINE_TEST(test_option_b)
 {
+	char *testprog_ustar = malloc(strlen(testprog) + sizeof(USTAR_OPT) + 1);
+	strcpy(testprog_ustar, testprog);
+	strcat(testprog_ustar, USTAR_OPT);
+
 	assertMakeFile("file1", 0644, "file1");
 	if (systemf("cat file1 > test_cat.out 2> test_cat.err") != 0) {
 		skipping("Platform doesn't have cat");
@@ -36,7 +42,7 @@ DEFINE_TEST(test_option_b)
 	/*
 	 * Bsdtar does not pad if the output is going directly to a disk file.
 	 */
-	assertEqualInt(0, systemf("%s -cf archive1.tar file1 >test1.out 2>test1.err", testprog));
+	assertEqualInt(0, systemf("%s -cf archive1.tar file1 >test1.out 2>test1.err", testprog_ustar));
 	failure("bsdtar does not pad archives written directly to regular files");
 	assertFileSize("archive1.tar", 2048);
 	assertEmptyFile("test1.out");
@@ -46,24 +52,24 @@ DEFINE_TEST(test_option_b)
 	 * Bsdtar does pad to the block size if the output is going to a socket.
 	 */
 	/* Default is -b 20 */
-	assertEqualInt(0, systemf("%s -cf - file1 2>test2.err | cat >archive2.tar ", testprog));
+	assertEqualInt(0, systemf("%s -cf - file1 2>test2.err | cat >archive2.tar ", testprog_ustar));
 	failure("bsdtar does pad archives written to pipes");
 	assertFileSize("archive2.tar", 10240);
 	assertEmptyFile("test2.err");
 
-	assertEqualInt(0, systemf("%s -cf - -b 20 file1 2>test3.err | cat >archive3.tar ", testprog));
+	assertEqualInt(0, systemf("%s -cf - -b 20 file1 2>test3.err | cat >archive3.tar ", testprog_ustar));
 	assertFileSize("archive3.tar", 10240);
 	assertEmptyFile("test3.err");
 
-	assertEqualInt(0, systemf("%s -cf - -b 10 file1 2>test4.err | cat >archive4.tar ", testprog));
+	assertEqualInt(0, systemf("%s -cf - -b 10 file1 2>test4.err | cat >archive4.tar ", testprog_ustar));
 	assertFileSize("archive4.tar", 5120);
 	assertEmptyFile("test4.err");
 
-	assertEqualInt(0, systemf("%s -cf - -b 1 file1 2>test5.err | cat >archive5.tar ", testprog));
+	assertEqualInt(0, systemf("%s -cf - -b 1 file1 2>test5.err | cat >archive5.tar ", testprog_ustar));
 	assertFileSize("archive5.tar", 2048);
 	assertEmptyFile("test5.err");
 
-	assertEqualInt(0, systemf("%s -cf - -b 8192 file1 2>test6.err | cat >archive6.tar ", testprog));
+	assertEqualInt(0, systemf("%s -cf - -b 8192 file1 2>test6.err | cat >archive6.tar ", testprog_ustar));
 	assertFileSize("archive6.tar", 4194304);
 	assertEmptyFile("test6.err");