Path: blob/main/contrib/libarchive/tar/test/test_option_C_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_C_upper)9{10int r;1112assertMakeDir("d1", 0755);13assertMakeDir("d2", 0755);14assertMakeFile("d1/file1", 0644, "d1/file1");15assertMakeFile("d1/file2", 0644, "d1/file2");16assertMakeFile("d2/file1", 0644, "d2/file1");17assertMakeFile("d2/file2", 0644, "d2/file2");1819/*20* Test 1: Basic use of -C21*/22assertMakeDir("test1", 0755);23assertChdir("test1");24assertEqualInt(0, systemf("%s -cf archive.tar -C ../d1 file1 -C ../d2 file2", testprog));25assertEqualInt(0,26systemf("%s -xf archive.tar >test.out 2>test.err", testprog));27assertFileContents("d1/file1", 8, "file1");28assertFileContents("d2/file2", 8, "file2");29assertEmptyFile("test.out");30assertEmptyFile("test.err");31assertChdir("..");323334/*35* Test 2: Multiple -C36*/37assertMakeDir("test2", 0755);38assertChdir("test2");39assertEqualInt(0, systemf("%s -cf archive.tar -C .. -C d1 file1 -C .. -C d2 file2", testprog));40assertEqualInt(0,41systemf("%s -xf archive.tar >test.out 2>test.err", testprog));42assertFileContents("d1/file1", 8, "file1");43assertFileContents("d2/file2", 8, "file2");44assertEmptyFile("test.out");45assertEmptyFile("test.err");46assertChdir("..");4748/*49* Test 3: -C fail50*/51assertMakeDir("test3", 0755);52assertChdir("test3");53r = systemf("%s -cf archive.tar -C ../XXX file1 -C ../d2 file2 2>write.err", testprog);54assert(r != 0);55assertNonEmptyFile("write.err");56assertEqualInt(0,57systemf("%s -xf archive.tar >test.out 2>test.err", testprog));58assertFileNotExists("file1");59assertFileNotExists("file2");60assertEmptyFile("test.out");61assertEmptyFile("test.err");62assertChdir("..");6364/*65* Test 4: Absolute -C66*/67assertMakeDir("test4", 0755);68assertChdir("test4");69assertEqualInt(0,70systemf("%s -cf archive.tar -C %s/d1 file1",71testprog, testworkdir));72assertEqualInt(0,73systemf("%s -xf archive.tar >test.out 2>test.err", testprog));74assertFileContents("d1/file1", 8, "file1");75assertEmptyFile("test.out");76assertEmptyFile("test.err");77assertChdir("..");7879/*80* Test 5: Unnecessary -C ignored even if directory named doesn't exist81*/82assertMakeDir("test5", 0755);83assertChdir("test5");84assertEqualInt(0,85systemf("%s -cf archive.tar -C XXX -C %s/d1 file1",86testprog, testworkdir));87assertEqualInt(0,88systemf("%s -xf archive.tar >test.out 2>test.err", testprog));89assertFileContents("d1/file1", 8, "file1");90assertEmptyFile("test.out");91assertEmptyFile("test.err");92assertChdir("..");9394/*95* Test 6: Necessary -C not ignored if directory doesn't exist96*/97assertMakeDir("test6", 0755);98assertChdir("test6");99r = systemf("%s -cf archive.tar -C XXX -C ../d1 file1 2>write.err",100testprog);101assert(r != 0);102assertNonEmptyFile("write.err");103assertEqualInt(0,104systemf("%s -xf archive.tar >test.out 2>test.err", testprog));105assertEmptyFile("test.out");106assertEmptyFile("test.err");107assertChdir("..");108109/*110* Test 7: -C used without specifying directory111*/112assertMakeDir("test7", 0755);113assertChdir("test7");114r = systemf("%s -cf archive.tar ../d1/file1 -C 2>write.err", testprog);115assert(r != 0);116assertNonEmptyFile("write.err");117assertChdir("..");118119/*120* Test 8: -C used with meaningless option ''121*/122assertMakeDir("test8", 0755);123assertChdir("test8");124r = systemf("%s -cf archive.tar ../d1/file1 -C \"\" 2>write.err",125testprog);126assert(r != 0);127assertNonEmptyFile("write.err");128assertChdir("..");129}130131132