test_read_format_txz.c revision 232153
1168404Spjd/*-
2168404Spjd * Copyright (c) 2009 Michihiro NAKAJIMA
3168404Spjd * Copyright (c) 2003-2007 Tim Kientzle
4168404Spjd * All rights reserved.
5168404Spjd *
6168404Spjd * Redistribution and use in source and binary forms, with or without
7168404Spjd * modification, are permitted provided that the following conditions
8168404Spjd * are met:
9168404Spjd * 1. Redistributions of source code must retain the above copyright
10168404Spjd *    notice, this list of conditions and the following disclaimer.
11168404Spjd * 2. Redistributions in binary form must reproduce the above copyright
12168404Spjd *    notice, this list of conditions and the following disclaimer in the
13168404Spjd *    documentation and/or other materials provided with the distribution.
14168404Spjd *
15168404Spjd * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
16168404Spjd * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
17168404Spjd * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
18168404Spjd * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
19168404Spjd * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20168404Spjd * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21168404Spjd * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22168404Spjd * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23168404Spjd * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24168404Spjd * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25168404Spjd */
26168404Spjd#include "test.h"
27168404Spjd__FBSDID("$FreeBSD: head/contrib/libarchive/libarchive/test/test_read_format_txz.c 232153 2012-02-25 10:58:02Z mm $");
28168404Spjd
29168404Spjdstatic unsigned char archive[] = {
30168404Spjd253, 55,122, 88, 90,  0,  0,  4,230,214,180, 70,  2,  0, 33,  1,
31168404Spjd 22,  0,  0,  0,116, 47,229,163,224,  5,255,  0, 73, 93,  0, 23,
32168404Spjd  0, 51, 80, 24,164,204,238, 45, 77, 28,191, 13,144,  8, 10, 70,
33168404Spjd  5,173,215, 47,132,237,145,162, 96,  6,131,168,152,  8,135,161,
34168404Spjd189, 73,110,132, 27,195, 52,109,203, 22, 17,168,211, 18,181, 76,
35168404Spjd 93,120, 88,154,155,244,141,193,206,170,224, 80,137,134, 67,  1,
36168404Spjd  9,123,121,188,247, 28,139,  0,  0,  0,  0,  0,112,184, 17,  5,
37168404Spjd103, 16,  8, 73,  0,  1,101,128, 12,  0,  0,  0, 30, 69, 92, 96,
38168404Spjd177,196,103,251,  2,  0,  0,  0,  0,  4, 89, 90
39168404Spjd};
40168404Spjd
41168404SpjdDEFINE_TEST(test_read_format_txz)
42168404Spjd{
43168404Spjd	struct archive_entry *ae;
44168404Spjd	struct archive *a;
45168404Spjd	int r;
46168404Spjd
47168404Spjd	assert((a = archive_read_new()) != NULL);
48168404Spjd	assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
49168404Spjd	r = archive_read_support_filter_xz(a);
50168404Spjd	if (r == ARCHIVE_WARN) {
51168404Spjd		skipping("xz reading not fully supported on this platform");
52168404Spjd		assertEqualInt(ARCHIVE_OK, archive_read_free(a));
53168404Spjd		return;
54168404Spjd	}
55168404Spjd	assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
56168404Spjd	assertEqualIntA(a, ARCHIVE_OK,
57168404Spjd	    archive_read_open_memory(a, archive, sizeof(archive)));
58168404Spjd	assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
59168404Spjd	assertEqualInt(1, archive_file_count(a));
60168404Spjd	assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_XZ);
61168404Spjd	assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
62168404Spjd	assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
63168404Spjd	assertEqualInt(ARCHIVE_OK, archive_read_free(a));
64168404Spjd}
65168404Spjd