16c95142eSMartin Matuska /*-
2*bd66c1b4SMartin Matuska * SPDX-License-Identifier: BSD-2-Clause
3*bd66c1b4SMartin Matuska *
46c95142eSMartin Matuska * Copyright (c) 2010 Tim Kientzle
56c95142eSMartin Matuska * All rights reserved.
66c95142eSMartin Matuska */
76c95142eSMartin Matuska #include "test.h"
86c95142eSMartin Matuska
DEFINE_TEST(test_option_C_upper)96c95142eSMartin Matuska DEFINE_TEST(test_option_C_upper)
106c95142eSMartin Matuska {
116c95142eSMartin Matuska int r;
126c95142eSMartin Matuska
136c95142eSMartin Matuska assertMakeDir("d1", 0755);
146c95142eSMartin Matuska assertMakeDir("d2", 0755);
156c95142eSMartin Matuska assertMakeFile("d1/file1", 0644, "d1/file1");
166c95142eSMartin Matuska assertMakeFile("d1/file2", 0644, "d1/file2");
176c95142eSMartin Matuska assertMakeFile("d2/file1", 0644, "d2/file1");
186c95142eSMartin Matuska assertMakeFile("d2/file2", 0644, "d2/file2");
196c95142eSMartin Matuska
206c95142eSMartin Matuska /*
216c95142eSMartin Matuska * Test 1: Basic use of -C
226c95142eSMartin Matuska */
236c95142eSMartin Matuska assertMakeDir("test1", 0755);
246c95142eSMartin Matuska assertChdir("test1");
256c95142eSMartin Matuska assertEqualInt(0, systemf("%s -cf archive.tar -C ../d1 file1 -C ../d2 file2", testprog));
266c95142eSMartin Matuska assertEqualInt(0,
276c95142eSMartin Matuska systemf("%s -xf archive.tar >test.out 2>test.err", testprog));
286c95142eSMartin Matuska assertFileContents("d1/file1", 8, "file1");
296c95142eSMartin Matuska assertFileContents("d2/file2", 8, "file2");
306c95142eSMartin Matuska assertEmptyFile("test.out");
316c95142eSMartin Matuska assertEmptyFile("test.err");
326c95142eSMartin Matuska assertChdir("..");
336c95142eSMartin Matuska
346c95142eSMartin Matuska
356c95142eSMartin Matuska /*
366c95142eSMartin Matuska * Test 2: Multiple -C
376c95142eSMartin Matuska */
386c95142eSMartin Matuska assertMakeDir("test2", 0755);
396c95142eSMartin Matuska assertChdir("test2");
406c95142eSMartin Matuska assertEqualInt(0, systemf("%s -cf archive.tar -C .. -C d1 file1 -C .. -C d2 file2", testprog));
416c95142eSMartin Matuska assertEqualInt(0,
426c95142eSMartin Matuska systemf("%s -xf archive.tar >test.out 2>test.err", testprog));
436c95142eSMartin Matuska assertFileContents("d1/file1", 8, "file1");
446c95142eSMartin Matuska assertFileContents("d2/file2", 8, "file2");
456c95142eSMartin Matuska assertEmptyFile("test.out");
466c95142eSMartin Matuska assertEmptyFile("test.err");
476c95142eSMartin Matuska assertChdir("..");
486c95142eSMartin Matuska
496c95142eSMartin Matuska /*
506c95142eSMartin Matuska * Test 3: -C fail
516c95142eSMartin Matuska */
526c95142eSMartin Matuska assertMakeDir("test3", 0755);
536c95142eSMartin Matuska assertChdir("test3");
546c95142eSMartin Matuska r = systemf("%s -cf archive.tar -C ../XXX file1 -C ../d2 file2 2>write.err", testprog);
556c95142eSMartin Matuska assert(r != 0);
566c95142eSMartin Matuska assertNonEmptyFile("write.err");
576c95142eSMartin Matuska assertEqualInt(0,
586c95142eSMartin Matuska systemf("%s -xf archive.tar >test.out 2>test.err", testprog));
596c95142eSMartin Matuska assertFileNotExists("file1");
606c95142eSMartin Matuska assertFileNotExists("file2");
616c95142eSMartin Matuska assertEmptyFile("test.out");
626c95142eSMartin Matuska assertEmptyFile("test.err");
636c95142eSMartin Matuska assertChdir("..");
646c95142eSMartin Matuska
656c95142eSMartin Matuska /*
666c95142eSMartin Matuska * Test 4: Absolute -C
676c95142eSMartin Matuska */
686c95142eSMartin Matuska assertMakeDir("test4", 0755);
696c95142eSMartin Matuska assertChdir("test4");
706c95142eSMartin Matuska assertEqualInt(0,
716c95142eSMartin Matuska systemf("%s -cf archive.tar -C %s/d1 file1",
726c95142eSMartin Matuska testprog, testworkdir));
736c95142eSMartin Matuska assertEqualInt(0,
746c95142eSMartin Matuska systemf("%s -xf archive.tar >test.out 2>test.err", testprog));
756c95142eSMartin Matuska assertFileContents("d1/file1", 8, "file1");
766c95142eSMartin Matuska assertEmptyFile("test.out");
776c95142eSMartin Matuska assertEmptyFile("test.err");
786c95142eSMartin Matuska assertChdir("..");
796c95142eSMartin Matuska
806c95142eSMartin Matuska /*
816c95142eSMartin Matuska * Test 5: Unnecessary -C ignored even if directory named doesn't exist
826c95142eSMartin Matuska */
836c95142eSMartin Matuska assertMakeDir("test5", 0755);
846c95142eSMartin Matuska assertChdir("test5");
856c95142eSMartin Matuska assertEqualInt(0,
866c95142eSMartin Matuska systemf("%s -cf archive.tar -C XXX -C %s/d1 file1",
876c95142eSMartin Matuska testprog, testworkdir));
886c95142eSMartin Matuska assertEqualInt(0,
896c95142eSMartin Matuska systemf("%s -xf archive.tar >test.out 2>test.err", testprog));
906c95142eSMartin Matuska assertFileContents("d1/file1", 8, "file1");
916c95142eSMartin Matuska assertEmptyFile("test.out");
926c95142eSMartin Matuska assertEmptyFile("test.err");
936c95142eSMartin Matuska assertChdir("..");
946c95142eSMartin Matuska
956c95142eSMartin Matuska /*
966c95142eSMartin Matuska * Test 6: Necessary -C not ignored if directory doesn't exist
976c95142eSMartin Matuska */
986c95142eSMartin Matuska assertMakeDir("test6", 0755);
996c95142eSMartin Matuska assertChdir("test6");
1006c95142eSMartin Matuska r = systemf("%s -cf archive.tar -C XXX -C ../d1 file1 2>write.err",
101f9762417SMartin Matuska testprog);
1026c95142eSMartin Matuska assert(r != 0);
1036c95142eSMartin Matuska assertNonEmptyFile("write.err");
1046c95142eSMartin Matuska assertEqualInt(0,
1056c95142eSMartin Matuska systemf("%s -xf archive.tar >test.out 2>test.err", testprog));
1066c95142eSMartin Matuska assertEmptyFile("test.out");
1076c95142eSMartin Matuska assertEmptyFile("test.err");
1086c95142eSMartin Matuska assertChdir("..");
1096c95142eSMartin Matuska
1106c95142eSMartin Matuska /*
1116c95142eSMartin Matuska * Test 7: -C used without specifying directory
1126c95142eSMartin Matuska */
1136c95142eSMartin Matuska assertMakeDir("test7", 0755);
1146c95142eSMartin Matuska assertChdir("test7");
1156c95142eSMartin Matuska r = systemf("%s -cf archive.tar ../d1/file1 -C 2>write.err", testprog);
1166c95142eSMartin Matuska assert(r != 0);
1176c95142eSMartin Matuska assertNonEmptyFile("write.err");
1186c95142eSMartin Matuska assertChdir("..");
1196c95142eSMartin Matuska
1206c95142eSMartin Matuska /*
1216c95142eSMartin Matuska * Test 8: -C used with meaningless option ''
1226c95142eSMartin Matuska */
1236c95142eSMartin Matuska assertMakeDir("test8", 0755);
1246c95142eSMartin Matuska assertChdir("test8");
1256c95142eSMartin Matuska r = systemf("%s -cf archive.tar ../d1/file1 -C \"\" 2>write.err",
1266c95142eSMartin Matuska testprog);
1276c95142eSMartin Matuska assert(r != 0);
1286c95142eSMartin Matuska assertNonEmptyFile("write.err");
1296c95142eSMartin Matuska assertChdir("..");
1306c95142eSMartin Matuska }
131