Reported by Jan Synáček <jan.synacek@gmail.com> at <https://lists.gnu.org/archive/html/guix-devel/2015-11/msg00522.html>. * gnu/packages/patches/libarchive-bsdtar-test.patch: New file. * gnu/packages/backup.scm (libarchive)[source]: Use it. * gnu-system.am (dist_patch_DATA): Add it.
		
			
				
	
	
		
			74 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
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");
 | 
						|
 
 |