xref: /freebsd/contrib/libarchive/cpio/test/test_option_m.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 
DEFINE_TEST(test_option_m)9caf54c4fSMartin Matuska DEFINE_TEST(test_option_m)
10caf54c4fSMartin Matuska {
11caf54c4fSMartin Matuska 	int r;
12caf54c4fSMartin Matuska 
13caf54c4fSMartin Matuska 	/*
14caf54c4fSMartin Matuska 	 * The reference archive has one file with an mtime in 1970, 1
15caf54c4fSMartin Matuska 	 * second after the start of the epoch.
16caf54c4fSMartin Matuska 	 */
17caf54c4fSMartin Matuska 
18caf54c4fSMartin Matuska 	/* Restored without -m, the result should have a current mtime. */
19caf54c4fSMartin Matuska 	assertMakeDir("without-m", 0755);
20caf54c4fSMartin Matuska 	assertChdir("without-m");
21caf54c4fSMartin Matuska 	extract_reference_file("test_option_m.cpio");
22caf54c4fSMartin Matuska 	r = systemf("%s --no-preserve-owner -i < test_option_m.cpio >out 2>err", testprog);
23caf54c4fSMartin Matuska 	assertEqualInt(r, 0);
24caf54c4fSMartin Matuska 	assertEmptyFile("out");
25caf54c4fSMartin Matuska 	assertTextFileContents("1 block\n", "err");
26caf54c4fSMartin Matuska 	/* Should have been created within the last few seconds. */
27caf54c4fSMartin Matuska 	assertFileMtimeRecent("file");
28caf54c4fSMartin Matuska 
29caf54c4fSMartin Matuska 	/* With -m, it should have an mtime in 1970. */
30caf54c4fSMartin Matuska 	assertChdir("..");
31caf54c4fSMartin Matuska 	assertMakeDir("with-m", 0755);
32caf54c4fSMartin Matuska 	assertChdir("with-m");
33caf54c4fSMartin Matuska 	extract_reference_file("test_option_m.cpio");
34caf54c4fSMartin Matuska 	r = systemf("%s --no-preserve-owner -im < test_option_m.cpio >out 2>err", testprog);
35caf54c4fSMartin Matuska 	assertEqualInt(r, 0);
36caf54c4fSMartin Matuska 	assertEmptyFile("out");
37caf54c4fSMartin Matuska 	assertTextFileContents("1 block\n", "err");
38caf54c4fSMartin Matuska 	/*
39caf54c4fSMartin Matuska 	 * mtime in reference archive is '1' == 1 second after
40caf54c4fSMartin Matuska 	 * midnight Jan 1, 1970 UTC.
41caf54c4fSMartin Matuska 	 */
42caf54c4fSMartin Matuska 	assertFileMtime("file", 1, 0);
43caf54c4fSMartin Matuska }
44