summaryrefslogtreecommitdiffstats
path: root/lib/libarchive/test
diff options
context:
space:
mode:
authorkientzle <kientzle@FreeBSD.org>2007-04-14 22:34:10 +0000
committerkientzle <kientzle@FreeBSD.org>2007-04-14 22:34:10 +0000
commit7cead8e1b5557dab20b40aa5c83b5fabc472d1e3 (patch)
treef7c9108819c3e455e2359c0417fcbc48a4df0bb9 /lib/libarchive/test
parentd7e5af0175ad9acf090a0f95a484847cfcf3b392 (diff)
downloadFreeBSD-src-7cead8e1b5557dab20b40aa5c83b5fabc472d1e3.zip
FreeBSD-src-7cead8e1b5557dab20b40aa5c83b5fabc472d1e3.tar.gz
Overhaul of 'ar' support:
* use "AR_GNU" as the format name instead of AR_SVR4 (it's what everyone is going to call it anyway) * Simplify numeric parsing to unsigned (none of the numeric values should ever be negative); don't run off end of numeric fields. * Finish parsing the common header fields before the next I/O request (which might dump the contents) * Be smarter about format guessing and trimming filenames. * Most of the magic values are only used in one place, so just inline them. * Many more comments. * Be smarter about handling damaged entries; return something reasonable. * Call it a "filename table" instead of a "string table" * Update tests. Enable selection of 'ar', 'arbsd', and 'argnu' formats by name (this allows bsdtar to create ar format archives). The 'ar' writer still needs some work; it should reject entries that aren't regular files and should probably also strip leading paths from filenames.
Diffstat (limited to 'lib/libarchive/test')
-rw-r--r--lib/libarchive/test/test_read_format_ar.c21
-rw-r--r--lib/libarchive/test/test_write_format_ar.c9
2 files changed, 21 insertions, 9 deletions
diff --git a/lib/libarchive/test/test_read_format_ar.c b/lib/libarchive/test/test_read_format_ar.c
index d3e4f0e..7a2a1e4 100644
--- a/lib/libarchive/test/test_read_format_ar.c
+++ b/lib/libarchive/test/test_read_format_ar.c
@@ -64,17 +64,22 @@ DEFINE_TEST(test_read_format_ar)
assertA(0 == archive_read_support_format_all(a));
assertA(0 == archive_read_open_memory(a, archive, sizeof(archive)));
- /* First we meet the string table */
+ /* Filename table. */
assertA(0 == archive_read_next_header(a, &ae));
- assertA(archive_compression(a) == ARCHIVE_COMPRESSION_NONE);
- assertA(archive_format(a) == ARCHIVE_FORMAT_AR);
assert(0 == strcmp("//", archive_entry_pathname(ae)));
- assert(40 == archive_entry_size(ae));
- assertA(40 == archive_read_data(a, buff, 45));
+ assertEqualInt(0, archive_entry_mtime(ae));
+ assertEqualInt(0, archive_entry_uid(ae));
+ assertEqualInt(0, archive_entry_gid(ae));
+ assertEqualInt(40, archive_entry_size(ae));
+ assertEqualIntA(a, 40, archive_read_data(a, buff, 50));
+ assert(0 == memcmp(buff, "yyytttsssaaafff.o/\nhhhhjjjjkkkkllll.o/\n\n", 40));
/* First Entry */
assertA(0 == archive_read_next_header(a, &ae));
assert(0 == strcmp("yyytttsssaaafff.o", archive_entry_pathname(ae)));
+ assertEqualInt(1175465652, archive_entry_mtime(ae));
+ assertEqualInt(1001, archive_entry_uid(ae));
+ assertEqualInt(0, archive_entry_gid(ae));
assert(8 == archive_entry_size(ae));
assertA(8 == archive_read_data(a, buff, 10));
assert(0 == memcmp(buff, "55667788", 8));
@@ -82,6 +87,9 @@ DEFINE_TEST(test_read_format_ar)
/* Second Entry */
assertA(0 == archive_read_next_header(a, &ae));
assert(0 == strcmp("gghh.o", archive_entry_pathname(ae)));
+ assertEqualInt(1175465668, archive_entry_mtime(ae));
+ assertEqualInt(1001, archive_entry_uid(ae));
+ assertEqualInt(0, archive_entry_gid(ae));
assert(4 == archive_entry_size(ae));
assertA(4 == archive_read_data(a, buff, 10));
assert(0 == memcmp(buff, "3333", 4));
@@ -89,6 +97,9 @@ DEFINE_TEST(test_read_format_ar)
/* Third Entry */
assertA(0 == archive_read_next_header(a, &ae));
assert(0 == strcmp("hhhhjjjjkkkkllll.o", archive_entry_pathname(ae)));
+ assertEqualInt(1175465713, archive_entry_mtime(ae));
+ assertEqualInt(1001, archive_entry_uid(ae));
+ assertEqualInt(0, archive_entry_gid(ae));
assert(9 == archive_entry_size(ae));
assertA(9 == archive_read_data(a, buff, 9));
assert(0 == memcmp(buff, "987654321", 9));
diff --git a/lib/libarchive/test/test_write_format_ar.c b/lib/libarchive/test/test_write_format_ar.c
index e54ab12..a352641 100644
--- a/lib/libarchive/test/test_write_format_ar.c
+++ b/lib/libarchive/test/test_write_format_ar.c
@@ -46,7 +46,7 @@ DEFINE_TEST(test_write_format_ar)
assertA(0 == archive_write_set_compression_none(a));
assertA(0 == archive_write_open_memory(a, buff, sizeof(buff), &used));
- /* write the string table */
+ /* write the filename table */
assert((ae = archive_entry_new()) != NULL);
archive_entry_copy_pathname(ae, "//");
archive_entry_set_size(ae, strlen(strtab));
@@ -89,9 +89,10 @@ DEFINE_TEST(test_write_format_ar)
assertA(0 == archive_read_open_memory(a, buff, used));
assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualInt(0, archive_entry_mtime(ae));
assert(0 == strcmp("//", archive_entry_pathname(ae)));
- assert(strlen(strtab) == archive_entry_size(ae));
- assertA(strlen(strtab) == archive_read_data(a, buff2, strlen(strtab)));
+ assertEqualInt(strlen(strtab), archive_entry_size(ae));
+ assertEqualIntA(a, strlen(strtab), archive_read_data(a, buff2, 100));
assert(0 == memcmp(buff2, strtab, strlen(strtab)));
assertA(0 == archive_read_next_header(a, &ae));
@@ -152,7 +153,7 @@ DEFINE_TEST(test_write_format_ar)
assert(0 == archive_read_next_header(a, &ae));
assert(0 == strcmp("ttttyyyyuuuuiiii.o", archive_entry_pathname(ae)));
- assert(5 == archive_entry_size(ae));
+ assertEqualInt(5, archive_entry_size(ae));
assertA(5 == archive_read_data(a, buff2, 10));
assert(0 == memcmp(buff2, "12345", 5));
OpenPOWER on IntegriCloud