xref: /freebsd/contrib/libarchive/tar/test/test_list_item.c (revision ee3960cba1068e12fb032a68c46d74841d9edab3)
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