test_read_format_raw.c revision 368708
11553Srgrimes/*- 21553Srgrimes * Copyright (c) 2007 Kai Wang 31553Srgrimes * Copyright (c) 2007 Tim Kientzle 41553Srgrimes * All rights reserved. 51553Srgrimes * 61553Srgrimes * Redistribution and use in source and binary forms, with or without 71553Srgrimes * modification, are permitted provided that the following conditions 81553Srgrimes * are met: 91553Srgrimes * 1. Redistributions of source code must retain the above copyright 101553Srgrimes * notice, this list of conditions and the following disclaimer 111553Srgrimes * in this position and unchanged. 121553Srgrimes * 2. Redistributions in binary form must reproduce the above copyright 131553Srgrimes * notice, this list of conditions and the following disclaimer in the 141553Srgrimes * documentation and/or other materials provided with the distribution. 151553Srgrimes * 161553Srgrimes * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR 171553Srgrimes * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 181553Srgrimes * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 191553Srgrimes * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, 201553Srgrimes * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 211553Srgrimes * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 221553Srgrimes * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 231553Srgrimes * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 241553Srgrimes * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 251553Srgrimes * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 261553Srgrimes */ 271553Srgrimes 281553Srgrimes#include "test.h" 291553Srgrimes__FBSDID("$FreeBSD: stable/10/contrib/libarchive/libarchive/test/test_read_format_raw.c 368708 2020-12-16 22:25:40Z mm $"); 301553Srgrimes 3130602ScharnierDEFINE_TEST(test_read_format_raw) 321553Srgrimes{ 331553Srgrimes char buff[512]; 341553Srgrimes struct archive_entry *ae; 351553Srgrimes struct archive *a; 361553Srgrimes const char *reffile1 = "test_read_format_raw.data"; 3730602Scharnier const char *reffile2 = "test_read_format_raw.data.Z"; 3830602Scharnier const char *reffile3 = "test_read_format_raw.bufr"; 3930602Scharnier#ifdef HAVE_ZLIB_H 406284Swollman const char *reffile4 = "test_read_format_raw.data.gz"; 4150476Speter#endif 421553Srgrimes 431553Srgrimes /* First, try pulling data out of an uninterpretable file. */ 4491217Sbde extract_reference_file(reffile1); 4591217Sbde assert((a = archive_read_new()) != NULL); 4691217Sbde assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); 471553Srgrimes assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); 481553Srgrimes assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_raw(a)); 49109097Sdillon assertEqualIntA(a, ARCHIVE_OK, 501553Srgrimes archive_read_open_filename(a, reffile1, 512)); 51272913Sjhb 52272913Sjhb /* First (and only!) Entry */ 53272913Sjhb assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 54272913Sjhb assertEqualString("data", archive_entry_pathname(ae)); 55272913Sjhb /* Most fields should be unset (unknown) */ 56272913Sjhb assert(!archive_entry_size_is_set(ae)); 57272913Sjhb assert(!archive_entry_atime_is_set(ae)); 58272913Sjhb assert(!archive_entry_ctime_is_set(ae)); 59272913Sjhb assert(!archive_entry_mtime_is_set(ae)); 6030602Scharnier assertEqualInt(archive_entry_is_encrypted(ae), 0); 6130602Scharnier assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED); 621553Srgrimes assertEqualInt(4, archive_read_data(a, buff, 32)); 63170287Sdwmalone assertEqualMem(buff, "foo\n", 4); 64122233Sdes 651553Srgrimes /* Test EOF */ 661553Srgrimes assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); 671553Srgrimes assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); 68244198Sdelphij assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 6930602Scharnier 701553Srgrimes 71244198Sdelphij /* Second, try the same with a compressed file. */ 72244198Sdelphij extract_reference_file(reffile2); 73203310Sgavin assert((a = archive_read_new()) != NULL); 74244198Sdelphij assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); 751553Srgrimes assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_by_code(a, ARCHIVE_FORMAT_RAW)); 7612946Sphk assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); 77244198Sdelphij assertEqualIntA(a, ARCHIVE_OK, 78244198Sdelphij archive_read_open_filename(a, reffile2, 1)); 7912946Sphk 80170512Sdwmalone /* First (and only!) Entry */ 81275485Sdelphij assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 821553Srgrimes assertEqualString("data", archive_entry_pathname(ae)); 83198340Sed assertEqualInt(archive_entry_is_encrypted(ae), 0); 8488696Sphk assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED); 8512946Sphk /* Most fields should be unset (unknown) */ 8612946Sphk assert(!archive_entry_size_is_set(ae)); 8712946Sphk assert(!archive_entry_atime_is_set(ae)); 881553Srgrimes assert(!archive_entry_ctime_is_set(ae)); 8977330Sdes assert(!archive_entry_mtime_is_set(ae)); 90244198Sdelphij assertEqualInt(4, archive_read_data(a, buff, 32)); 91244106Salfred assertEqualMem(buff, "foo\n", 4); 9212946Sphk 9312946Sphk /* Test EOF */ 941553Srgrimes assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); 951553Srgrimes assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); 9612946Sphk assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 971553Srgrimes 9812946Sphk 99244198Sdelphij /* Third, try with file which fooled us in past - appeared to be tar. */ 100122233Sdes extract_reference_file(reffile3); 101122233Sdes assert((a = archive_read_new()) != NULL); 10212946Sphk assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); 10312946Sphk assertEqualIntA(a, ARCHIVE_OK, archive_read_set_format(a, ARCHIVE_FORMAT_RAW)); 1041553Srgrimes assertEqualIntA(a, ARCHIVE_OK, 105244198Sdelphij archive_read_open_filename(a, reffile3, 1)); 1061553Srgrimes 10771034Sdes /* First (and only!) Entry */ 10877330Sdes assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 10977330Sdes assertEqualString("data", archive_entry_pathname(ae)); 11071034Sdes assertEqualInt(archive_entry_is_encrypted(ae), 0); 11171034Sdes assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED); 11271034Sdes /* Most fields should be unset (unknown) */ 11371034Sdes assert(!archive_entry_size_is_set(ae)); 11471034Sdes assert(!archive_entry_atime_is_set(ae)); 11571034Sdes assert(!archive_entry_ctime_is_set(ae)); 11671034Sdes assert(!archive_entry_mtime_is_set(ae)); 11788006Sluigi 11888006Sluigi /* Test EOF */ 11988006Sluigi assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); 12085747Stobez assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); 12185747Stobez assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 12285747Stobez 123244198Sdelphij#ifdef HAVE_ZLIB_H 124244198Sdelphij /* Fourth, try with gzip which has metadata. */ 125244198Sdelphij extract_reference_file(reffile4); 126122233Sdes assert((a = archive_read_new()) != NULL); 127122233Sdes assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); 128122233Sdes assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_raw(a)); 129203310Sgavin assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); 130203310Sgavin assertEqualIntA(a, ARCHIVE_OK, 131203310Sgavin archive_read_open_filename(a, reffile4, 1)); 13271034Sdes 13371034Sdes /* First (and only!) Entry */ 13471034Sdes assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 13571034Sdes assertEqualString("test-file-name.data", archive_entry_pathname(ae)); 13671034Sdes assertEqualInt(archive_entry_is_encrypted(ae), 0); 13771034Sdes assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED); 13877330Sdes assert(archive_entry_mtime_is_set(ae)); 13977330Sdes assertEqualIntA(a, archive_entry_mtime(ae), 0x5cbafd25); 14077330Sdes /* Most fields should be unset (unknown) */ 141150167Srwatson assert(!archive_entry_size_is_set(ae)); 142150167Srwatson assert(!archive_entry_atime_is_set(ae)); 143150167Srwatson assert(!archive_entry_ctime_is_set(ae)); 144244106Salfred 145244106Salfred /* Test EOF */ 146244106Salfred assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); 14771034Sdes assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); 14877330Sdes assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 14977330Sdes#endif 15071034Sdes} 151244106Salfred