summaryrefslogtreecommitdiffstats
path: root/lib/libarchive/test/test_read_format_iso_gz.c
diff options
context:
space:
mode:
authormm <mm@FreeBSD.org>2011-08-25 08:35:09 +0000
committermm <mm@FreeBSD.org>2011-08-25 08:35:09 +0000
commitd02c70f432d57241ad6adf044f5fea83d571bd99 (patch)
tree98a2160b30a97972827b50ad6769e01c00a4acda /lib/libarchive/test/test_read_format_iso_gz.c
parente104c96f018139a8d2a85057c37ae2e5999cbd41 (diff)
downloadFreeBSD-src-d02c70f432d57241ad6adf044f5fea83d571bd99.zip
FreeBSD-src-d02c70f432d57241ad6adf044f5fea83d571bd99.tar.gz
Import bugfix for reading and extracting of FreeBSD ISO images with tar.
Upstream revision 3645 (merge of 3642): Change the mechanism handling a rr_moved directory, which is Rockridge extension that can exceed the limitation of a maximum directory depth of ISO 9660. - Stop reading all entries at a time. - Connect "CL" entry to "RE" entry dynamically, which "CL" and "RE" have information to rebuild a full directory tree. - Tweak some related tests since we use Headsort for re-ordering entries and it cannot make a steady order when the keies of the entries are the same. http://code.google.com/p/libarchive/issues/detail?id=168 Reviewed by: kientzle Approved by: re (kib) Obtained from: libarchive (release/2.8, svn rev 3645) MFC after: 3 days
Diffstat (limited to 'lib/libarchive/test/test_read_format_iso_gz.c')
-rw-r--r--lib/libarchive/test/test_read_format_iso_gz.c49
1 files changed, 48 insertions, 1 deletions
diff --git a/lib/libarchive/test/test_read_format_iso_gz.c b/lib/libarchive/test/test_read_format_iso_gz.c
index 2289379..d0d6b3c 100644
--- a/lib/libarchive/test/test_read_format_iso_gz.c
+++ b/lib/libarchive/test/test_read_format_iso_gz.c
@@ -25,7 +25,8 @@
#include "test.h"
__FBSDID("$FreeBSD$");
-DEFINE_TEST(test_read_format_iso_gz)
+static void
+test1(void)
{
struct archive_entry *ae;
struct archive *a;
@@ -49,4 +50,50 @@ DEFINE_TEST(test_read_format_iso_gz)
assertEqualInt(ARCHIVE_OK, archive_read_finish(a));
}
+static
+void test2(void)
+{
+ struct archive_entry *ae;
+ struct archive *a;
+ const char *name = "test_read_format_iso_2.iso.Z";
+
+ extract_reference_file(name);
+
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_support_compression_all(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_filename(a, name, 512));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_next_header(a, &ae));
+ assertEqualString(".", archive_entry_pathname(ae));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_next_header(a, &ae));
+ assertEqualString("A", archive_entry_pathname(ae));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_next_header(a, &ae));
+ assertEqualString("A/B", archive_entry_pathname(ae));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_next_header(a, &ae));
+ assertEqualString("C", archive_entry_pathname(ae));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_next_header(a, &ae));
+ assertEqualString("C/D", archive_entry_pathname(ae));
+ assertEqualIntA(a, ARCHIVE_EOF,
+ archive_read_next_header(a, &ae));
+ assertEqualInt(archive_compression(a),
+ ARCHIVE_COMPRESSION_COMPRESS);
+ assertEqualInt(archive_format(a), ARCHIVE_FORMAT_ISO9660);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_finish(a));
+}
+
+DEFINE_TEST(test_read_format_iso_gz)
+{
+ test1();
+ test2();
+}
+
OpenPOWER on IntegriCloud