diff options
Diffstat (limited to 'contrib/libarchive/libarchive/test/test_write_format_zip_empty.c')
-rw-r--r-- | contrib/libarchive/libarchive/test/test_write_format_zip_empty.c | 36 |
1 files changed, 29 insertions, 7 deletions
diff --git a/contrib/libarchive/libarchive/test/test_write_format_zip_empty.c b/contrib/libarchive/libarchive/test/test_write_format_zip_empty.c index ef90b8d96551..27ebf188b518 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_zip_empty.c +++ b/contrib/libarchive/libarchive/test/test_write_format_zip_empty.c @@ -33,24 +33,46 @@ __FBSDID("$FreeBSD$"); DEFINE_TEST(test_write_format_zip_empty) { struct archive *a; + struct archive_entry *ae; char buff[256]; size_t used; /* Zip format: Create a new archive in memory. */ assert((a = archive_write_new()) != NULL); - assertA(0 == archive_write_set_format_zip(a)); - assertA(0 == archive_write_set_compression_none(a)); - assertA(0 == archive_write_set_bytes_per_block(a, 1)); - assertA(0 == archive_write_set_bytes_in_last_block(a, 1)); - assertA(0 == archive_write_open_memory(a, buff, sizeof(buff), &used)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_zip(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_none(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_per_block(a, 1)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_in_last_block(a, 1)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, sizeof(buff), &used)); /* Close out the archive without writing anything. */ - assertA(0 == archive_write_close(a)); - assertA(0 == archive_write_finish(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); /* Verify the correct format for an empy Zip archive. */ assertEqualInt(used, 22); assertEqualMem(buff, "PK\005\006\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 22); + + /* Verify that we read this kind of empty archive correctly. */ + /* Try with the standard memory reader, and with the test + memory reader with and without seek support. */ + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_zip(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, 22)); + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_zip(a)); + assertEqualIntA(a, ARCHIVE_OK, read_open_memory(a, buff, 22, 1)); + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_zip(a)); + assertEqualIntA(a, ARCHIVE_OK, read_open_memory_seek(a, buff, 22, 22)); + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); } |