Home | History | Annotate | Line # | Download | only in test
      1 /*-
      2  * SPDX-License-Identifier: BSD-2-Clause
      3  *
      4  * Copyright (c) 2010 Tim Kientzle
      5  * All rights reserved.
      6  */
      7 #include "test.h"
      8 
      9 DEFINE_TEST(test_option_exclude)
     10 {
     11 	int r;
     12 
     13 	assertMakeFile("file1", 0644, "file1");
     14 	assertMakeFile("file2", 0644, "file2");
     15 	assertEqualInt(0, systemf("%s -cf archive.tar file1 file2", testprog));
     16 
     17 	/*
     18 	 * Now, try extracting from the test archive with various --exclude options.
     19 	 */
     20 
     21 	/* Test 1: Without --exclude */
     22 	assertMakeDir("test1", 0755);
     23 	assertChdir("test1");
     24 	assertEqualInt(0,
     25 	    systemf("%s -xf ../archive.tar >test.out 2>test.err", testprog));
     26 	assertFileContents("file1", 5, "file1");
     27 	assertFileContents("file2", 5, "file2");
     28 	assertEmptyFile("test.out");
     29 	assertEmptyFile("test.err");
     30 	assertChdir("..");
     31 
     32 	/* Test 2: Selecting just one file */
     33 	assertMakeDir("test2", 0755);
     34 	assertChdir("test2");
     35 	assertEqualInt(0,
     36 	    systemf("%s -xf ../archive.tar file1 >test.out 2>test.err", testprog));
     37 	assertFileContents("file1", 5, "file1");
     38 	assertFileNotExists("file2");
     39 	assertEmptyFile("test.out");
     40 	assertEmptyFile("test.err");
     41 	assertChdir("..");
     42 
     43 	/* Test 3: Use --exclude to skip one file */
     44 	assertMakeDir("test3", 0755);
     45 	assertChdir("test3");
     46 	assertEqualInt(0,
     47 	    systemf("%s -xf ../archive.tar --exclude file1 >test.out 2>test.err", testprog));
     48 	assertFileNotExists("file1");
     49 	assertFileContents("file2", 5, "file2");
     50 	assertEmptyFile("test.out");
     51 	assertEmptyFile("test.err");
     52 	assertChdir("..");
     53 
     54 	/* Test 4: Selecting one valid and one invalid file */
     55 	assertMakeDir("test4", 0755);
     56 	assertChdir("test4");
     57 	r = systemf("%s -xf ../archive.tar file1 file3 >test.out 2>test.err", testprog);
     58 	assert(r != 0);
     59 	assertFileContents("file1", 5, "file1");
     60 	assertFileNotExists("file2");
     61 	assertFileNotExists("file3");
     62 	assertEmptyFile("test.out");
     63 	assertNonEmptyFile("test.err");
     64 	assertChdir("..");
     65 
     66 	/* Test 5: Selecting one valid file twice */
     67 	assertMakeDir("test5", 0755);
     68 	assertChdir("test5");
     69 	assertEqualInt(0,
     70 	    systemf("%s -xf ../archive.tar file1 file1 >test.out 2>test.err", testprog));
     71 	assertFileContents("file1", 5, "file1");
     72 	assertFileNotExists("file2");
     73 	assertEmptyFile("test.out");
     74 	assertEmptyFile("test.err");
     75 	assertChdir("..");
     76 
     77 	/* Test 6: Include and exclude the same file */
     78 	assertMakeDir("test6", 0755);
     79 	assertChdir("test6");
     80 	assertEqualInt(0,
     81 	    systemf("%s -xf ../archive.tar --exclude file1 file1 >test.out 2>test.err", testprog));
     82 	assertFileNotExists("file1");
     83 	assertFileNotExists("file2");
     84 	assertEmptyFile("test.out");
     85 	assertEmptyFile("test.err");
     86 	assertChdir("..");
     87 
     88 	/* Test 7: Exclude a non-existent file */
     89 	assertMakeDir("test7", 0755);
     90 	assertChdir("test7");
     91 	assertEqualInt(0,
     92 	    systemf("%s -xf ../archive.tar --exclude file3 file1 >test.out 2>test.err", testprog));
     93 	assertFileContents("file1", 5, "file1");
     94 	assertFileNotExists("file2");
     95 	assertFileNotExists("file3");
     96 	assertEmptyFile("test.out");
     97 	assertEmptyFile("test.err");
     98 	assertChdir("..");
     99 
    100 	/* Test 8: Include a non-existent file */
    101 	assertMakeDir("test8", 0755);
    102 	assertChdir("test8");
    103 	r = systemf("%s -xf ../archive.tar file3 >test.out 2>test.err", testprog);
    104 	assert(r != 0);
    105 	assertFileNotExists("file1");
    106 	assertFileNotExists("file2");
    107 	assertFileNotExists("file3");
    108 	assertEmptyFile("test.out");
    109 	assertNonEmptyFile("test.err");
    110 	assertChdir("..");
    111 
    112 	/* Test 9: Include a non-existent file plus an exclusion */
    113 	assertMakeDir("test9", 0755);
    114 	assertChdir("test9");
    115 	r = systemf("%s -xf ../archive.tar --exclude file1 file3 >test.out 2>test.err", testprog);
    116 	assert(r != 0);
    117 	assertFileNotExists("file1");
    118 	assertFileNotExists("file2");
    119 	assertFileNotExists("file3");
    120 	assertEmptyFile("test.out");
    121 	assertNonEmptyFile("test.err");
    122 	assertChdir("..");
    123 }
    124