xref: /freebsd/contrib/libarchive/unzip/test/test_f.c (revision 185becb1e1bd2657c156f78aeb52edac05ba5fb5)
1*185becb1SMartin Matuska /*
2*185becb1SMartin Matuska  * SPDX-License-Identifier: BSD-2-Clause
3*185becb1SMartin Matuska  *
4*185becb1SMartin Matuska  * Copyright (c) 2026 Tobias Stoeckmann
5*185becb1SMartin Matuska  * All rights reserved.
6*185becb1SMartin Matuska  */
7*185becb1SMartin Matuska #include "test.h"
8*185becb1SMartin Matuska 
9*185becb1SMartin Matuska /* Test f arg - don't create new files or overwrite newer files */
DEFINE_TEST(test_f)10*185becb1SMartin Matuska DEFINE_TEST(test_f)
11*185becb1SMartin Matuska {
12*185becb1SMartin Matuska 	const char *reffile1 = "test_f_new.zip";
13*185becb1SMartin Matuska 	const char *reffile2 = "test_f_old.zip";
14*185becb1SMartin Matuska 	int r;
15*185becb1SMartin Matuska 
16*185becb1SMartin Matuska 	extract_reference_file(reffile1);
17*185becb1SMartin Matuska 	extract_reference_file(reffile2);
18*185becb1SMartin Matuska 
19*185becb1SMartin Matuska 	/* First run with -f should not extract: test.txt does not exist */
20*185becb1SMartin Matuska 	r = systemf("%s -f %s >test.out 2>test.err", testprog, reffile1);
21*185becb1SMartin Matuska 	assertEqualInt(0, r);
22*185becb1SMartin Matuska 	assertNonEmptyFile("test.out");
23*185becb1SMartin Matuska 	assertEmptyFile("test.err");
24*185becb1SMartin Matuska 	assertFileNotExists("test.txt");
25*185becb1SMartin Matuska 
26*185becb1SMartin Matuska 	/* Extract archive */
27*185becb1SMartin Matuska 	r = systemf("%s %s >test.out 2>test.err", testprog, reffile1);
28*185becb1SMartin Matuska 	assertEqualInt(0, r);
29*185becb1SMartin Matuska 	assertNonEmptyFile("test.out");
30*185becb1SMartin Matuska 	assertEmptyFile("test.err");
31*185becb1SMartin Matuska 	assertTextFileContents("world\n", "test.txt");
32*185becb1SMartin Matuska 
33*185becb1SMartin Matuska 	/* Second run with -f should not overwrite newer file */
34*185becb1SMartin Matuska 	r = systemf("%s -f %s >test.out 2>test.err", testprog, reffile2);
35*185becb1SMartin Matuska 	assertEqualInt(0, r);
36*185becb1SMartin Matuska 	assertNonEmptyFile("test.out");
37*185becb1SMartin Matuska 	assertEmptyFile("test.err");
38*185becb1SMartin Matuska 	assertTextFileContents("world\n", "test.txt");
39*185becb1SMartin Matuska }
40