]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
tests: fix testsuite for umask issues 787/head
authorPavel Raiskup <praiskup@redhat.com>
Mon, 26 Sep 2016 10:56:52 +0000 (12:56 +0200)
committerPavel Raiskup <praiskup@redhat.com>
Mon, 26 Sep 2016 10:57:38 +0000 (12:57 +0200)
Reproducible with umask 0077.

Resolves: #782

tar/test/main.c
tar/test/test.h
tar/test/test_option_H_upper.c
tar/test/test_option_L_upper.c
tar/test/test_option_U_upper.c
tar/test/test_option_n.c

index 08ac6277370a2351fe07337e3eb61300e971e409..e24e6a6f86a5bb2c5551fc56710a27edd98385f3 100644 (file)
@@ -130,6 +130,13 @@ __FBSDID("$FreeBSD: src/usr.bin/tar/test/main.c,v 1.6 2008/11/05 06:40:53 kientz
 # include <crtdbg.h>
 #endif
 
+mode_t umasked(mode_t expected_mode)
+{
+       mode_t mode = umask(0);
+       umask(mode);
+       return expected_mode & ~mode;
+}
+
 /* Path to working directory for current test */
 const char *testworkdir;
 #ifdef PROGRAM
index 704a137ed3fb82a9fd953a6291c91dc8edb3352b..263a80fd17cdb7cdeac30fa15eb39315420a9918 100644 (file)
@@ -326,6 +326,9 @@ void copy_reference_file(const char *);
  */
 void extract_reference_files(const char **);
 
+/* Subtract umask from mode */
+mode_t umasked(mode_t expected_mode);
+
 /* Path to working directory for current test */
 extern const char *testworkdir;
 
index 7ddd917b7b94c749d893c86594db55d2c42b264c..adc294b55b260958d0df56716605dd3b56599455 100644 (file)
@@ -83,10 +83,10 @@ DEFINE_TEST(test_option_H_upper)
        assertChdir("test3");
        assertEqualInt(0,
            systemf("%s -xf archive.tar >c.out 2>c.err", testprog));
-       assertIsDir("ld1", 0755);
+       assertIsDir("ld1", umasked(0755));
        assertIsSymlink("d1/linkX", "fileX");
        assertIsSymlink("d1/link1", "file1");
-       assertIsReg("link2", 0644);
+       assertIsReg("link2", umasked(0644));
        assertIsSymlink("linkY", "d1/fileY");
        assertChdir("..");
 }
index 57abe412cd2d9de21c8e4c0379f4c6a536829906..f5a3c5ab4cba6278d29f69f1ed90fa04d56dd040 100644 (file)
@@ -69,10 +69,10 @@ DEFINE_TEST(test_option_L_upper)
        assertChdir("test2");
        assertEqualInt(0,
            systemf("%s -xf archive.tar >c.out 2>c.err", testprog));
-       assertIsDir("ld1", 0755);
-       assertIsReg("d1/link1", 0644);
+       assertIsDir("ld1", umasked(0755));
+       assertIsReg("d1/link1", umasked(0644));
        assertIsSymlink("d1/linkX", "fileX");
-       assertIsReg("link2", 0644);
+       assertIsReg("link2", umasked(0644));
        assertIsSymlink("linkY", "d1/fileY");
        assertChdir("..");
 
@@ -83,10 +83,10 @@ DEFINE_TEST(test_option_L_upper)
        assertChdir("test3");
        assertEqualInt(0,
            systemf("%s -xf archive.tar >c.out 2>c.err", testprog));
-       assertIsDir("ld1", 0755);
-       assertIsReg("d1/link1", 0644);
+       assertIsDir("ld1", umasked(0755));
+       assertIsReg("d1/link1", umasked(0644));
        assertIsSymlink("d1/linkX", "fileX");
-       assertIsReg("link2", 0644);
+       assertIsReg("link2", umasked(0644));
        assertIsSymlink("linkY", "d1/fileY");
        assertChdir("..");
 }
index 4d77cb03810a48ee0e4e538ccc8d02150faedc26..2c43e002df5beb33ff9c6dfddd17d82d0e469c0f 100644 (file)
@@ -135,7 +135,7 @@ DEFINE_TEST(test_option_U_upper)
        assertMakeSymlink("d1/file1", "d1/realfile1");
        assertEqualInt(0,
            systemf("%s -xf ../archive.tar d1/file1 >test.out 2>test.err", testprog));
-       assertIsReg("d1/file1", 0644);
+       assertIsReg("d1/file1", umasked(0644));
        assertFileContents("d1/file1", 8, "d1/file1");
        assertFileContents("realfile1", 9, "d1/realfile1");
        assertEmptyFile("test.out");
@@ -150,7 +150,7 @@ DEFINE_TEST(test_option_U_upper)
        assertMakeSymlink("d1/file1", "d1/realfile1");
        assertEqualInt(0,
            systemf("%s -xPUf ../archive.tar d1/file1 >test.out 2>test.err", testprog));
-       assertIsReg("d1/file1", 0644);
+       assertIsReg("d1/file1", umasked(0644));
        assertFileContents("d1/file1", 8, "d1/file1");
        assertFileContents("realfile1", 9, "d1/realfile1");
        assertEmptyFile("test.out");
index 4017dd9f01fd59a8261b296c39438b61db886368..18ab6142d0f2e8940c01a79f2fcbb4432daf6059 100644 (file)
@@ -55,7 +55,7 @@ DEFINE_TEST(test_option_n)
            systemf("%s -xf archive.tar >x.out 2>x.err", testprog));
        assertEmptyFile("x.out");
        assertEmptyFile("x.err");
-       assertIsDir("d1", 0755);
+       assertIsDir("d1", umasked(0755));
        assertFileNotExists("d1/file1");
        assertChdir("..");
 }