1228753Smm/*- 2228753Smm * Copyright (c) 2003-2007 Tim Kientzle 3228753Smm * Copyright (c) 2009 Michihiro NAKAJIMA 4228753Smm * All rights reserved. 5228753Smm * 6228753Smm * Redistribution and use in source and binary forms, with or without 7228753Smm * modification, are permitted provided that the following conditions 8228753Smm * are met: 9228753Smm * 1. Redistributions of source code must retain the above copyright 10228753Smm * notice, this list of conditions and the following disclaimer. 11228753Smm * 2. Redistributions in binary form must reproduce the above copyright 12228753Smm * notice, this list of conditions and the following disclaimer in the 13228753Smm * documentation and/or other materials provided with the distribution. 14228753Smm * 15228753Smm * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR 16228753Smm * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 17228753Smm * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 18228753Smm * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, 19228753Smm * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20228753Smm * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21228753Smm * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22228753Smm * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23228753Smm * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24228753Smm * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25228753Smm */ 26228753Smm#include "test.h" 27228753Smm 28228753Smm/* 29228753SmmExecute the following command to rebuild the data for this program: 30228753Smm tail -n +32 test_read_format_cpio_svr4_gzip_rpm.c | /bin/sh 31228753Smm 32228753SmmF=test_read_format_cpio_svr4_gzip_rpm.rpm 33228753SmmNAME=rpmsample 34228753SmmTMPRPM=/tmp/rpm 35228753Smmrm -rf ${TMPRPM} 36228753Smmmkdir -p ${TMPRPM}/BUILD 37228753Smmmkdir -p ${TMPRPM}/RPMS 38228753Smmmkdir -p ${TMPRPM}/SOURCES 39228753Smmmkdir -p ${TMPRPM}/SPECS 40228753Smmmkdir -p ${TMPRPM}/SRPMS 41228753Smmecho "hello" > ${TMPRPM}/BUILD/file1 42228753Smmecho "hello" > ${TMPRPM}/BUILD/file2 43228753Smmecho "hello" > ${TMPRPM}/BUILD/file3 44228753Smmcat > ${TMPRPM}/SPECS/${NAME}.spec <<END 45228753Smm## 46228753Smm%define _topdir ${TMPRPM} 47228753Smm%define _binary_payload w9.gzdio 48228753Smm 49228753SmmSummary: Sample data of RPM filter of libarchive 50228753SmmName: ${NAME} 51228753SmmVersion: 1.0.0 52228753SmmRelease: 1 53228753SmmLicense: BSD 54238856SmmURL: http://libarchive.github.com/ 55228753SmmBuildArch: noarch 56228753SmmBuildRoot: %{_tmppath}/%{name}-%{version}-root 57228753Smm 58228753Smm%install 59228753Smmrm -rf \$RPM_BUILD_ROOT 60228753Smm 61228753Smmmkdir -p \$RPM_BUILD_ROOT%{_sysconfdir} 62228753Smminstall -m 644 file1 \$RPM_BUILD_ROOT%{_sysconfdir}/file1 63228753Smminstall -m 644 file2 \$RPM_BUILD_ROOT%{_sysconfdir}/file2 64228753Smminstall -m 644 file3 \$RPM_BUILD_ROOT%{_sysconfdir}/file3 65228753SmmTZ=utc touch -afm -t 197001020000.01 \$RPM_BUILD_ROOT%{_sysconfdir}/file1 66228753SmmTZ=utc touch -afm -t 197001020000.01 \$RPM_BUILD_ROOT%{_sysconfdir}/file2 67228753SmmTZ=utc touch -afm -t 197001020000.01 \$RPM_BUILD_ROOT%{_sysconfdir}/file3 68228753Smm 69228753Smm%files 70228753Smm%{_sysconfdir}/file1 71228753Smm%{_sysconfdir}/file2 72228753Smm%{_sysconfdir}/file3 73228753Smm 74228753Smm%description 75228753SmmSample data. 76228753SmmEND 77228753Smm# 78228753Smmrpmbuild -bb ${TMPRPM}/SPECS/${NAME}.spec 79228753Smmuuencode ${F} < ${TMPRPM}/RPMS/noarch/${NAME}-1.0.0-1.noarch.rpm > ${F}.uu 80228753Smm 81228753Smmrm -rf ${TMPRPM} 82228753Smmexit 1 83228753Smm*/ 84228753Smm 85228753SmmDEFINE_TEST(test_read_format_cpio_svr4_gzip_rpm) 86228753Smm{ 87228753Smm struct archive_entry *ae; 88228753Smm struct archive *a; 89228753Smm const char *name = "test_read_format_cpio_svr4_gzip_rpm.rpm"; 90228753Smm int r; 91228753Smm 92228753Smm assert((a = archive_read_new()) != NULL); 93232153Smm r = archive_read_support_filter_gzip(a); 94228753Smm if (r == ARCHIVE_WARN) { 95228753Smm skipping("gzip reading not fully supported on this platform"); 96232153Smm assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 97228753Smm return; 98228753Smm } 99228753Smm assertEqualIntA(a, ARCHIVE_OK, r); 100228753Smm assertEqualIntA(a, ARCHIVE_OK, 101232153Smm archive_read_support_filter_rpm(a)); 102228753Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); 103228753Smm extract_reference_file(name); 104228753Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a, name, 2)); 105228753Smm 106228753Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 107228753Smm assertEqualString("./etc/file1", archive_entry_pathname(ae)); 108228753Smm assertEqualInt(86401, archive_entry_mtime(ae)); 109228753Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 110228753Smm assertEqualString("./etc/file2", archive_entry_pathname(ae)); 111228753Smm assertEqualInt(86401, archive_entry_mtime(ae)); 112228753Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 113228753Smm assertEqualString("./etc/file3", archive_entry_pathname(ae)); 114228753Smm assertEqualInt(86401, archive_entry_mtime(ae)); 115228753Smm 116228753Smm /* Verify the end-of-archive. */ 117228753Smm assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); 118228753Smm 119228753Smm /* Verify that the format detection worked. */ 120248616Smm assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_GZIP); 121248616Smm assertEqualString(archive_filter_name(a, 0), "gzip"); 122228753Smm assertEqualInt(archive_format(a), ARCHIVE_FORMAT_CPIO_SVR4_NOCRC); 123228753Smm 124228753Smm assertEqualInt(ARCHIVE_OK, archive_read_close(a)); 125232153Smm assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 126228753Smm} 127228753Smm 128