xref: /freebsd/contrib/libarchive/tar/test/test_option_C_upper.c (revision bd66c1b43e33540205dbc1187c2f2a15c58b57ba)
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