xref: /freebsd/contrib/libarchive/cpio/test/test_option_f.c (revision bd66c1b43e33540205dbc1187c2f2a15c58b57ba)
1caf54c4fSMartin Matuska /*-
2*bd66c1b4SMartin Matuska  * SPDX-License-Identifier: BSD-2-Clause
3*bd66c1b4SMartin Matuska  *
4caf54c4fSMartin Matuska  * Copyright (c) 2003-2007 Tim Kientzle
5caf54c4fSMartin Matuska  * All rights reserved.
6caf54c4fSMartin Matuska  */
7caf54c4fSMartin Matuska #include "test.h"
8caf54c4fSMartin Matuska 
9caf54c4fSMartin Matuska /*
10caf54c4fSMartin Matuska  * Unpack the archive in a new dir.
11caf54c4fSMartin Matuska  */
12caf54c4fSMartin Matuska static void
unpack(const char * dirname,const char * option)13caf54c4fSMartin Matuska unpack(const char *dirname, const char *option)
14caf54c4fSMartin Matuska {
15caf54c4fSMartin Matuska 	int r;
16caf54c4fSMartin Matuska 
17caf54c4fSMartin Matuska 	assertMakeDir(dirname, 0755);
18caf54c4fSMartin Matuska 	assertChdir(dirname);
19caf54c4fSMartin Matuska 	extract_reference_file("test_option_f.cpio");
20caf54c4fSMartin Matuska 	r = systemf("%s -i %s < test_option_f.cpio > copy-no-a.out 2>copy-no-a.err", testprog, option);
21caf54c4fSMartin Matuska 	assertEqualInt(0, r);
22caf54c4fSMartin Matuska 	assertChdir("..");
23caf54c4fSMartin Matuska }
24caf54c4fSMartin Matuska 
DEFINE_TEST(test_option_f)25caf54c4fSMartin Matuska DEFINE_TEST(test_option_f)
26caf54c4fSMartin Matuska {
27caf54c4fSMartin Matuska 	/* Calibrate:  No -f option, so everything should be extracted. */
28caf54c4fSMartin Matuska 	unpack("t0", "--no-preserve-owner");
29caf54c4fSMartin Matuska 	assertFileExists("t0/a123");
30caf54c4fSMartin Matuska 	assertFileExists("t0/a234");
31caf54c4fSMartin Matuska 	assertFileExists("t0/b123");
32caf54c4fSMartin Matuska 	assertFileExists("t0/b234");
33caf54c4fSMartin Matuska 
34caf54c4fSMartin Matuska 	/* Don't extract 'a*' files. */
35caf54c4fSMartin Matuska #if defined(_WIN32) && !defined(__CYGWIN__)
36caf54c4fSMartin Matuska 	/* Single quotes isn't used by command.exe. */
37caf54c4fSMartin Matuska 	unpack("t1", "--no-preserve-owner -f a*");
38caf54c4fSMartin Matuska #else
39caf54c4fSMartin Matuska 	unpack("t1", "--no-preserve-owner -f 'a*'");
40caf54c4fSMartin Matuska #endif
41caf54c4fSMartin Matuska 	assertFileNotExists("t1/a123");
42caf54c4fSMartin Matuska 	assertFileNotExists("t1/a234");
43caf54c4fSMartin Matuska 	assertFileExists("t1/b123");
44caf54c4fSMartin Matuska 	assertFileExists("t1/b234");
45caf54c4fSMartin Matuska 
46caf54c4fSMartin Matuska 	/* Don't extract 'b*' files. */
47caf54c4fSMartin Matuska #if defined(_WIN32) && !defined(__CYGWIN__)
48caf54c4fSMartin Matuska 	/* Single quotes isn't used by command.exe. */
49caf54c4fSMartin Matuska 	unpack("t2", "--no-preserve-owner -f b*");
50caf54c4fSMartin Matuska #else
51caf54c4fSMartin Matuska 	unpack("t2", "--no-preserve-owner -f 'b*'");
52caf54c4fSMartin Matuska #endif
53caf54c4fSMartin Matuska 	assertFileExists("t2/a123");
54caf54c4fSMartin Matuska 	assertFileExists("t2/a234");
55caf54c4fSMartin Matuska 	assertFileNotExists("t2/b123");
56caf54c4fSMartin Matuska 	assertFileNotExists("t2/b234");
57caf54c4fSMartin Matuska }
58