Path: blob/main/contrib/libarchive/tar/test/test_option_X_upper.c
39507 views
/*-1* SPDX-License-Identifier: BSD-2-Clause2*3* Copyright (c) 2010 Tim Kientzle4* All rights reserved.5*/6#include "test.h"78DEFINE_TEST(test_option_X_upper)9{10int r;1112/*13* Create a sample archive.14*/15assertMakeFile("file1", 0644, "file1");16assertMakeFile("file2", 0644, "file2");17assertMakeFile("file3a", 0644, "file3a");18assertMakeFile("file4a", 0644, "file4a");19assertEqualInt(0,20systemf("%s -cf archive.tar file1 file2 file3a file4a", testprog));2122/*23* Now, try extracting from the test archive with various -X usage.24*/2526/* Test 1: Without -X */27assertMakeDir("test1", 0755);28assertChdir("test1");29r = systemf("%s -xf ../archive.tar >test.out 2>test.err",30testprog);31if (!assertEqualInt(0, r))32return;3334assertFileContents("file1", 5, "file1");35assertFileContents("file2", 5, "file2");36assertFileContents("file3a", 6, "file3a");37assertFileContents("file4a", 6, "file4a");38assertEmptyFile("test.out");39assertEmptyFile("test.err");40assertChdir("..");4142/* Test 2: Use -X to skip one file */43assertMakeDir("test2", 0755);44assertChdir("test2");45assertMakeFile("exclusions", 0644, "file1\n");46assertEqualInt(0,47systemf("%s -xf ../archive.tar -X exclusions >test.out 2>test.err", testprog));48assertFileNotExists("file1");49assertFileContents("file2", 5, "file2");50assertFileContents("file3a", 6, "file3a");51assertFileContents("file4a", 6, "file4a");52assertEmptyFile("test.out");53assertEmptyFile("test.err");54assertChdir("..");5556/* Test 3: Use -X to skip multiple files */57assertMakeDir("test3", 0755);58assertChdir("test3");59assertMakeFile("exclusions", 0644, "file1\nfile2\n");60assertEqualInt(0,61systemf("%s -xf ../archive.tar -X exclusions >test.out 2>test.err", testprog));62assertFileNotExists("file1");63assertFileNotExists("file2");64assertFileContents("file3a", 6, "file3a");65assertFileContents("file4a", 6, "file4a");66assertEmptyFile("test.out");67assertEmptyFile("test.err");68assertChdir("..");6970/* Test 4: Omit trailing \n */71assertMakeDir("test4", 0755);72assertChdir("test4");73assertMakeFile("exclusions", 0644, "file1\nfile2");74assertEqualInt(0,75systemf("%s -xf ../archive.tar -X exclusions >test.out 2>test.err", testprog));76assertFileNotExists("file1");77assertFileNotExists("file2");78assertFileContents("file3a", 6, "file3a");79assertFileContents("file4a", 6, "file4a");80assertEmptyFile("test.out");81assertEmptyFile("test.err");82assertChdir("..");8384/* Test 5: include/exclude without overlap */85assertMakeDir("test5", 0755);86assertChdir("test5");87assertMakeFile("exclusions", 0644, "file1\nfile2");88assertEqualInt(0,89systemf("%s -xf ../archive.tar -X exclusions file3a >test.out 2>test.err", testprog));90assertFileNotExists("file1");91assertFileNotExists("file2");92assertFileContents("file3a", 6, "file3a");93assertFileNotExists("file4a");94assertEmptyFile("test.out");95assertEmptyFile("test.err");96assertChdir("..");9798/* Test 6: Overlapping include/exclude */99assertMakeDir("test6", 0755);100assertChdir("test6");101assertMakeFile("exclusions", 0644, "file1\nfile2");102assertEqualInt(0,103systemf("%s -xf ../archive.tar -X exclusions file1 file3a >test.out 2>test.err", testprog));104assertFileNotExists("file1");105assertFileNotExists("file2");106assertFileContents("file3a", 6, "file3a");107assertFileNotExists("file4a");108assertEmptyFile("test.out");109assertEmptyFile("test.err");110assertChdir("..");111112/* Test 7: with pattern */113assertMakeDir("test7", 0755);114assertChdir("test7");115assertMakeFile("exclusions", 0644, "file*a\nfile1");116assertEqualInt(0,117systemf("%s -xf ../archive.tar -X exclusions >test.out 2>test.err", testprog));118assertFileNotExists("file1");119assertFileContents("file2", 5, "file2");120assertFileNotExists("file3a");121assertFileNotExists("file4a");122assertEmptyFile("test.out");123assertEmptyFile("test.err");124assertChdir("..");125126/* Test 8: with empty exclusions file */127assertMakeDir("test8", 0755);128assertChdir("test8");129assertMakeFile("exclusions", 0644, "");130assertEqualInt(0,131systemf("%s -xf ../archive.tar -X exclusions >test.out 2>test.err", testprog));132assertFileContents("file1", 5, "file1");133assertFileContents("file2", 5, "file2");134assertFileContents("file3a", 6, "file3a");135assertFileContents("file4a", 6, "file4a");136assertEmptyFile("test.out");137assertEmptyFile("test.err");138assertChdir("..");139}140141142