1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
3 *
4 * Copyright (c) 2024 Tim Kientzle
5 * All rights reserved.
6 */
7 #include "test.h"
8
9 #include <string.h>
10
DEFINE_TEST(test_read_format_gtar_redundant_L)11 DEFINE_TEST(test_read_format_gtar_redundant_L)
12 {
13 const char *refname = "test_read_format_gtar_redundant_L.tar.Z";
14 struct archive *a;
15 struct archive_entry *ae;
16
17 extract_reference_file(refname);
18 assert((a = archive_read_new()) != NULL);
19 assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
20 assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
21 assertEqualIntA(a, ARCHIVE_OK,
22 archive_read_open_filename(a, refname, 10240));
23
24 /* First file has redundant 'L' headers; this should prompt
25 * a suitable ARCHIVE_WARN message */
26 assertEqualIntA(a, ARCHIVE_WARN, archive_read_next_header(a, &ae));
27 assertEqualInt(archive_errno(a), -1);
28 assert(strstr(archive_error_string(a), "Redundant 'L'") != NULL);
29
30 /* End of archive. */
31 assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
32
33 /* Verify archive format. */
34 assertEqualIntA(a, ARCHIVE_FILTER_COMPRESS, archive_filter_code(a, 0));
35 assertEqualIntA(a, ARCHIVE_FORMAT_TAR_GNUTAR, archive_format(a));
36
37 /* Close the archive. */
38 assertEqualInt(ARCHIVE_OK, archive_read_close(a));
39 assertEqualInt(ARCHIVE_OK, archive_read_free(a));
40 }
41