xref: /freebsd-src/contrib/libarchive/unzip/test/test_x.c (revision bd66c1b43e33540205dbc1187c2f2a15c58b57ba)
1e64fe029SMartin Matuska /*
2*bd66c1b4SMartin Matuska  * SPDX-License-Identifier: BSD-2-Clause
3*bd66c1b4SMartin Matuska  *
4e64fe029SMartin Matuska  * Copyright (c) 2023 Adrian Vovk
5e64fe029SMartin Matuska  * All rights reserved.
6e64fe029SMartin Matuska  */
7e64fe029SMartin Matuska #include "test.h"
8e64fe029SMartin Matuska 
9058ab969SMartin Matuska /* Test x arg with single exclude path */
10058ab969SMartin Matuska DEFINE_TEST(test_x_single)
11e64fe029SMartin Matuska {
12e64fe029SMartin Matuska 	const char *reffile = "test_basic.zip";
13e64fe029SMartin Matuska 	int r;
14e64fe029SMartin Matuska 
15e64fe029SMartin Matuska 	extract_reference_file(reffile);
16e64fe029SMartin Matuska 	r = systemf("%s %s -x test_basic/c >test.out 2>test.err", testprog, reffile);
17e64fe029SMartin Matuska 	assertEqualInt(0, r);
18e64fe029SMartin Matuska 	assertNonEmptyFile("test.out");
19e64fe029SMartin Matuska 	assertEmptyFile("test.err");
20e64fe029SMartin Matuska 
21e64fe029SMartin Matuska 	assertTextFileContents("contents a\n", "test_basic/a");
22e64fe029SMartin Matuska 	assertTextFileContents("contents b\n", "test_basic/b");
23e64fe029SMartin Matuska 	assertFileNotExists("test_basic/c");
24e64fe029SMartin Matuska 	assertTextFileContents("contents CAPS\n", "test_basic/CAPS");
25e64fe029SMartin Matuska }
26058ab969SMartin Matuska 
27058ab969SMartin Matuska /* Test x arg with multiple exclude paths */
28058ab969SMartin Matuska DEFINE_TEST(test_x_multiple)
29058ab969SMartin Matuska {
30058ab969SMartin Matuska 	const char *reffile = "test_basic.zip";
31058ab969SMartin Matuska 	int r;
32058ab969SMartin Matuska 
33058ab969SMartin Matuska 	extract_reference_file(reffile);
34058ab969SMartin Matuska 	r = systemf("%s %s -x test_basic/c test_basic/b >test.out 2>test.err", testprog, reffile);
35058ab969SMartin Matuska 	assertEqualInt(0, r);
36058ab969SMartin Matuska 	assertNonEmptyFile("test.out");
37058ab969SMartin Matuska 	assertEmptyFile("test.err");
38058ab969SMartin Matuska 
39058ab969SMartin Matuska 	assertTextFileContents("contents a\n", "test_basic/a");
40058ab969SMartin Matuska 	assertFileNotExists("test_basic/b");
41058ab969SMartin Matuska 	assertFileNotExists("test_basic/c");
42058ab969SMartin Matuska 	assertTextFileContents("contents CAPS\n", "test_basic/CAPS");
43058ab969SMartin Matuska }
44058ab969SMartin Matuska 
45058ab969SMartin Matuska /* Test x arg with multiple exclude paths and a d arg afterwards */
46058ab969SMartin Matuska DEFINE_TEST(test_x_multiple_with_d)
47058ab969SMartin Matuska {
48058ab969SMartin Matuska 	const char *reffile = "test_basic.zip";
49058ab969SMartin Matuska 	int r;
50058ab969SMartin Matuska 
51058ab969SMartin Matuska 	extract_reference_file(reffile);
52058ab969SMartin Matuska 	r = systemf("%s %s -x test_basic/c test_basic/b -d foobar >test.out 2>test.err", testprog, reffile);
53058ab969SMartin Matuska 	assertEqualInt(0, r);
54058ab969SMartin Matuska 	assertNonEmptyFile("test.out");
55058ab969SMartin Matuska 	assertEmptyFile("test.err");
56058ab969SMartin Matuska 
57058ab969SMartin Matuska 	assertTextFileContents("contents a\n", "foobar/test_basic/a");
58058ab969SMartin Matuska 	assertFileNotExists("foobar/test_basic/b");
59058ab969SMartin Matuska 	assertFileNotExists("foobar/test_basic/c");
60058ab969SMartin Matuska 	assertTextFileContents("contents CAPS\n", "foobar/test_basic/CAPS");
61058ab969SMartin Matuska }
62