1 /*-SPDX-License-Identifier: BSD-2-Clause 2 * Copyright (c) 2024 Tarsnap Backup Inc. 3 * All rights reserved. 4 */ 5 #include "test.h" 6 7 #if defined(_WIN32) && !defined(__CYGWIN__) 8 #include <winbase.h> 9 #endif 10 11 /* These lists of files come from 'test_list_archive.tar.uu', which includes 12 * the script which generated it. */ 13 14 static const char *tf_out = 15 "f\n" 16 "hl\n" 17 "sl\n" 18 "d/\n" 19 "d/f\n" 20 "fake-username\n" 21 "fake-groupname\n" 22 "f\n"; 23 24 #if defined(_WIN32) && !defined(__CYGWIN__) 25 static const char *tvf_out = 26 "-rw-r--r-- 0 1000 1000 0 Jan 01 1980 f\n" 27 "hrw-r--r-- 0 1000 1000 0 Jan 01 1980 hl link to f\n" 28 "lrwxr-xr-x 0 1000 1000 0 Jan 01 1980 sl -> f\n" 29 "drwxrwxrwx 0 1000 1000 0 Jan 01 1980 d/\n" 30 "-r-------- 0 1000 1000 0 Jan 01 1980 d/f\n" 31 "-rw-r--r-- 0 long-fake-uname 1000 0 Jan 01 1980 fake-username\n" 32 "-rw-r--r-- 0 1000 long-fake-gname 0 Jan 01 1980 fake-groupname\n" 33 "-rw-r--r-- 0 1000 1000 0 Jan 01 1980 f\n"; 34 #else 35 static const char *tvf_out = 36 "-rw-r--r-- 0 1000 1000 0 Jan 1 1980 f\n" 37 "hrw-r--r-- 0 1000 1000 0 Jan 1 1980 hl link to f\n" 38 "lrwxr-xr-x 0 1000 1000 0 Jan 1 1980 sl -> f\n" 39 "drwxrwxrwx 0 1000 1000 0 Jan 1 1980 d/\n" 40 "-r-------- 0 1000 1000 0 Jan 1 1980 d/f\n" 41 "-rw-r--r-- 0 long-fake-uname 1000 0 Jan 1 1980 fake-username\n" 42 "-rw-r--r-- 0 1000 long-fake-gname 0 Jan 1 1980 fake-groupname\n" 43 "-rw-r--r-- 0 1000 1000 0 Jan 1 1980 f\n"; 44 #endif 45 46 DEFINE_TEST(test_list_item) 47 { 48 extract_reference_file("test_list_item.tar"); 49 50 /* Run 'tf' and check output. */ 51 assertEqualInt(0, 52 systemf("%s tf test_list_item.tar >tf.out 2>tf.err", testprog)); 53 failure("'t' mode should write results to stdout"); 54 assertTextFileContents(tf_out, "tf.out"); 55 assertEmptyFile("tf.err"); 56 57 /* Run 'tvf' and check output. */ 58 assertEqualInt(0, 59 systemf("%s tvf test_list_item.tar >tvf.out 2>tvf.err", testprog)); 60 failure("'t' mode with 'v' should write more results to stdout"); 61 assertTextFileContents(tvf_out, "tvf.out"); 62 assertEmptyFile("tvf.err"); 63 } 64