1 /*- 2 * Copyright (c) 2003-2007 Tim Kientzle 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR 15 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 16 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 17 * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, 18 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 19 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 20 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 21 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 23 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 */ 25 #include "test.h" 26 __FBSDID("$FreeBSD$"); 27 28 29 DEFINE_TEST(test_option_m) 30 { 31 struct stat st; 32 int r; 33 time_t now; 34 35 /* 36 * The reference archive has one file with an mtime in 1970, 1 37 * second after the start of the epoch. 38 */ 39 40 /* Restored without -m, the result should have a current mtime. */ 41 assertEqualInt(0, mkdir("without-m", 0755)); 42 assertEqualInt(0, chdir("without-m")); 43 extract_reference_file("test_option_m.cpio"); 44 r = systemf("%s -i < test_option_m.cpio >out 2>err", testprog); 45 now = time(NULL); 46 assertEqualInt(r, 0); 47 assertEmptyFile("out"); 48 assertFileContents("1 block\n", 8, "err"); 49 assertEqualInt(0, stat("file", &st)); 50 /* Should have been created within the last few seconds. */ 51 assert(st.st_mtime <= now); 52 assert(st.st_mtime > now - 5); 53 54 /* With -m, it should have an mtime in 1970. */ 55 assertEqualInt(0, chdir("..")); 56 assertEqualInt(0, mkdir("with-m", 0755)); 57 assertEqualInt(0, chdir("with-m")); 58 extract_reference_file("test_option_m.cpio"); 59 r = systemf("%s -im < test_option_m.cpio >out 2>err", testprog); 60 now = time(NULL); 61 assertEqualInt(r, 0); 62 assertEmptyFile("out"); 63 assertFileContents("1 block\n", 8, "err"); 64 assertEqualInt(0, stat("file", &st)); 65 /* 66 * mtime in reference archive is '1' == 1 second after 67 * midnight Jan 1, 1970 UTC. 68 */ 69 assertEqualInt(1, st.st_mtime); 70 } 71