summaryrefslogtreecommitdiffstats
path: root/lib/libarchive/test
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libarchive/test')
-rw-r--r--lib/libarchive/test/test.h11
-rw-r--r--lib/libarchive/test/test_compat_bzip2.c11
-rw-r--r--lib/libarchive/test/test_compat_gzip.c11
-rw-r--r--lib/libarchive/test/test_compat_zip.c17
-rw-r--r--lib/libarchive/test/test_fuzz.c42
-rw-r--r--lib/libarchive/test/test_read_format_cpio_bin_bz2.c16
-rw-r--r--lib/libarchive/test/test_read_format_cpio_bin_gz.c16
-rw-r--r--lib/libarchive/test/test_read_format_cpio_svr4_gzip.c16
-rw-r--r--lib/libarchive/test/test_read_format_gtar_gz.c16
-rw-r--r--lib/libarchive/test/test_read_format_iso_gz.c16
-rw-r--r--lib/libarchive/test/test_read_format_pax_bz2.c16
-rw-r--r--lib/libarchive/test/test_read_format_tbz.c16
-rw-r--r--lib/libarchive/test/test_read_format_tgz.c16
-rw-r--r--lib/libarchive/test/test_read_format_zip.c18
-rw-r--r--lib/libarchive/test/test_write_compress_program.c41
15 files changed, 189 insertions, 90 deletions
diff --git a/lib/libarchive/test/test.h b/lib/libarchive/test/test.h
index 19b2a67..fcac91a 100644
--- a/lib/libarchive/test/test.h
+++ b/lib/libarchive/test/test.h
@@ -189,3 +189,14 @@ int read_open_memory2(struct archive *, void *, size_t, size_t);
test_assert_equal_int(__FILE__, __LINE__, (v1), #v1, (v2), #v2, (a))
#define assertEqualStringA(a,v1,v2) \
test_assert_equal_string(__FILE__, __LINE__, (v1), #v1, (v2), #v2, (a))
+
+/*
+ * A compression is not supported
+ * Use this define after archive_read_next_header() is called
+ */
+#define UnsupportedCompress(r, a) \
+ (r != ARCHIVE_OK && \
+ (strcmp(archive_error_string(a), \
+ "Unrecognized archive format") == 0 && \
+ archive_compression(a) == ARCHIVE_COMPRESSION_NONE))
+
diff --git a/lib/libarchive/test/test_compat_bzip2.c b/lib/libarchive/test/test_compat_bzip2.c
index f9d4029..4b2cf05 100644
--- a/lib/libarchive/test/test_compat_bzip2.c
+++ b/lib/libarchive/test/test_compat_bzip2.c
@@ -55,6 +55,12 @@ compat_bzip2(const char *name)
/* Read entries, match up names with list above. */
for (i = 0; i < 6; ++i) {
r = archive_read_next_header(a, &ae);
+ if (UnsupportedCompress(r, a)) {
+ skipping("Skipping BZIP2 compression check: "
+ "This version of libarchive was compiled "
+ "without bzip2 support");
+ goto finish;
+ }
failure("Could not read file %d (%s) from %s", i, n[i], name);
assertEqualIntA(a, ARCHIVE_OK, r);
if (r != ARCHIVE_OK) {
@@ -73,6 +79,7 @@ compat_bzip2(const char *name)
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+finish:
#if ARCHIVE_VERSION_NUMBER < 2000000
archive_read_finish(a);
#else
@@ -83,12 +90,8 @@ compat_bzip2(const char *name)
DEFINE_TEST(test_compat_bzip2)
{
-#if HAVE_BZLIB_H
compat_bzip2("test_compat_bzip2_1.tbz");
compat_bzip2("test_compat_bzip2_2.tbz");
-#else
- skipping("Need bzlib");
-#endif
}
diff --git a/lib/libarchive/test/test_compat_gzip.c b/lib/libarchive/test/test_compat_gzip.c
index 87dd23b..25cdc2b 100644
--- a/lib/libarchive/test/test_compat_gzip.c
+++ b/lib/libarchive/test/test_compat_gzip.c
@@ -55,6 +55,12 @@ verify(const char *name)
/* Read entries, match up names with list above. */
for (i = 0; i < 6; ++i) {
r = archive_read_next_header(a, &ae);
+ if (UnsupportedCompress(r, a)) {
+ skipping("Skipping GZIP compression check: "
+ "This version of libarchive was compiled "
+ "without gzip support");
+ goto finish;
+ }
failure("Could not read file %d (%s) from %s", i, n[i], name);
assertEqualIntA(a, ARCHIVE_OK, r);
if (r != ARCHIVE_OK) {
@@ -73,6 +79,7 @@ verify(const char *name)
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+finish:
#if ARCHIVE_VERSION_NUMBER < 2000000
archive_read_finish(a);
#else
@@ -83,7 +90,6 @@ verify(const char *name)
DEFINE_TEST(test_compat_gzip)
{
-#if HAVE_ZLIB_H
/* This sample has been 'split', each piece compressed separately,
* then concatenated. Gunzip will emit the concatenated result. */
/* Not supported in libarchive 2.6 and earlier */
@@ -91,9 +97,6 @@ DEFINE_TEST(test_compat_gzip)
/* This sample has been compressed as a single stream, but then
* some unrelated garbage text has been appended to the end. */
verify("test_compat_gzip_2.tgz");
-#else
- skipping("Need zlib");
-#endif
}
diff --git a/lib/libarchive/test/test_compat_zip.c b/lib/libarchive/test/test_compat_zip.c
index ac26d34..f60bc4f 100644
--- a/lib/libarchive/test/test_compat_zip.c
+++ b/lib/libarchive/test/test_compat_zip.c
@@ -32,6 +32,7 @@ test_compat_zip_1(void)
char name[] = "test_compat_zip_1.zip";
struct archive_entry *ae;
struct archive *a;
+ int r;
assert((a = archive_read_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_read_support_compression_all(a));
@@ -44,7 +45,16 @@ test_compat_zip_1(void)
assertEqualString("META-INF/MANIFEST.MF", archive_entry_pathname(ae));
/* Read second entry. */
- assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ r = archive_read_next_header(a, &ae);
+ if (r != ARCHIVE_OK) {
+ if (strcmp(archive_error_string(a),
+ "libarchive compiled without deflate support (no libz)") == 0) {
+ skipping("Skipping ZIP compression check: %s",
+ archive_error_string(a));
+ goto finish;
+ }
+ }
+ assertEqualIntA(a, ARCHIVE_OK, r);
assertEqualString("tmp.class", archive_entry_pathname(ae));
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
@@ -53,6 +63,7 @@ test_compat_zip_1(void)
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_ZIP);
assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+finish:
#if ARCHIVE_VERSION_NUMBER < 2000000
archive_read_finish(a);
#else
@@ -63,11 +74,7 @@ test_compat_zip_1(void)
DEFINE_TEST(test_compat_zip)
{
-#if HAVE_ZLIB_H
test_compat_zip_1();
-#else
- skipping("Need zlib");
-#endif
}
diff --git a/lib/libarchive/test/test_fuzz.c b/lib/libarchive/test/test_fuzz.c
index 673d4b7..ab25c27 100644
--- a/lib/libarchive/test/test_fuzz.c
+++ b/lib/libarchive/test/test_fuzz.c
@@ -51,19 +51,13 @@ __FBSDID("$FreeBSD$");
static const char *
files[] = {
"test_fuzz_1.iso",
-#if HAVE_BZLIB_H
"test_compat_bzip2_1.tbz",
-#endif
"test_compat_gtar_1.tar",
"test_compat_tar_hardlink_1.tar",
-#if HAVE_ZLIB_H
"test_compat_zip_1.zip",
-#endif
"test_read_format_gtar_sparse_1_17_posix10_modified.tar",
"test_read_format_tar_empty_filename.tar",
-#if HAVE_ZLIB_H
"test_read_format_zip.zip",
-#endif
NULL
};
@@ -72,9 +66,11 @@ DEFINE_TEST(test_fuzz)
const char **filep;
for (filep = files; *filep != NULL; ++filep) {
+ struct archive_entry *ae;
+ struct archive *a;
char *rawimage, *image;
size_t size;
- int i;
+ int i, r;
extract_reference_file(*filep);
rawimage = slurpfile(&size, *filep);
@@ -83,9 +79,37 @@ DEFINE_TEST(test_fuzz)
assert(image != NULL);
srand(time(NULL));
+ assert((a = archive_read_new()) != NULL);
+ assert(0 == archive_read_support_compression_all(a));
+ assert(0 == archive_read_support_format_all(a));
+ assert(0 == archive_read_open_memory(a, rawimage, size));
+ r = archive_read_next_header(a, &ae);
+ if (UnsupportedCompress(r, a)) {
+ skipping("Skipping GZIP/BZIP2 compression check: "
+ "This version of libarchive was compiled "
+ "without gzip/bzip2 support");
+ assert(0 == archive_read_close(a));
+ assert(0 == archive_read_finish(a));
+ continue;
+ }
+ assert(0 == r);
+ if (r == ARCHIVE_OK) {
+ char buff[20];
+
+ r = archive_read_data(a, buff, 19);
+ if (r < ARCHIVE_OK && strcmp(archive_error_string(a),
+ "libarchive compiled without deflate support (no libz)") == 0) {
+ skipping("Skipping ZIP compression check: %s",
+ archive_error_string(a));
+ assert(0 == archive_read_close(a));
+ assert(0 == archive_read_finish(a));
+ continue;
+ }
+ }
+ assert(0 == archive_read_close(a));
+ assert(0 == archive_read_finish(a));
+
for (i = 0; i < 100; ++i) {
- struct archive_entry *ae;
- struct archive *a;
int j, fd, numbytes;
/* Fuzz < 1% of the bytes in the archive. */
diff --git a/lib/libarchive/test/test_read_format_cpio_bin_bz2.c b/lib/libarchive/test/test_read_format_cpio_bin_bz2.c
index 0a857f0..426841b 100644
--- a/lib/libarchive/test/test_read_format_cpio_bin_bz2.c
+++ b/lib/libarchive/test/test_read_format_cpio_bin_bz2.c
@@ -34,27 +34,33 @@ static unsigned char archive[] = {
DEFINE_TEST(test_read_format_cpio_bin_bz2)
{
-#if HAVE_BZLIB_H
struct archive_entry *ae;
struct archive *a;
+ int r;
+
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_memory(a, archive, sizeof(archive)));
- assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ r = archive_read_next_header(a, &ae);
+ if (UnsupportedCompress(r, a)) {
+ skipping("Skipping BZ2 compression check: "
+ "This version of libarchive was compiled "
+ "without bz2 support");
+ goto finish;
+ }
+ assertEqualIntA(a, ARCHIVE_OK, r);
assert(archive_compression(a) == ARCHIVE_COMPRESSION_BZIP2);
assert(archive_format(a) == ARCHIVE_FORMAT_CPIO_BIN_LE);
assert(0 == archive_read_close(a));
+finish:
#if ARCHIVE_VERSION_NUMBER < 2000000
archive_read_finish(a);
#else
assert(0 == archive_read_finish(a));
#endif
-#else
- skipping("Need bzlib");
-#endif
}
diff --git a/lib/libarchive/test/test_read_format_cpio_bin_gz.c b/lib/libarchive/test/test_read_format_cpio_bin_gz.c
index ce05f9d..77e322f 100644
--- a/lib/libarchive/test/test_read_format_cpio_bin_gz.c
+++ b/lib/libarchive/test/test_read_format_cpio_bin_gz.c
@@ -33,25 +33,31 @@ static unsigned char archive[] = {
DEFINE_TEST(test_read_format_cpio_bin_gz)
{
-#if HAVE_ZLIB_H
struct archive_entry *ae;
struct archive *a;
+ int r;
+
assert((a = archive_read_new()) != NULL);
assert(0 == archive_read_support_compression_all(a));
assert(0 == archive_read_support_format_all(a));
assert(0 == archive_read_open_memory(a, archive, sizeof(archive)));
- assert(0 == archive_read_next_header(a, &ae));
+ r = archive_read_next_header(a, &ae);
+ if (UnsupportedCompress(r, a)) {
+ skipping("Skipping GZIP compression check: "
+ "This version of libarchive was compiled "
+ "without gzip support");
+ goto finish;
+ }
+ assert(0 == r);
assert(archive_compression(a) == ARCHIVE_COMPRESSION_GZIP);
assert(archive_format(a) == ARCHIVE_FORMAT_CPIO_BIN_LE);
assert(0 == archive_read_close(a));
+finish:
#if ARCHIVE_VERSION_NUMBER < 2000000
archive_read_finish(a);
#else
assert(0 == archive_read_finish(a));
#endif
-#else
- skipping("Need zlib");
-#endif
}
diff --git a/lib/libarchive/test/test_read_format_cpio_svr4_gzip.c b/lib/libarchive/test/test_read_format_cpio_svr4_gzip.c
index 2787405..e517bb2 100644
--- a/lib/libarchive/test/test_read_format_cpio_svr4_gzip.c
+++ b/lib/libarchive/test/test_read_format_cpio_svr4_gzip.c
@@ -34,25 +34,31 @@ static unsigned char archive[] = {
DEFINE_TEST(test_read_format_cpio_svr4_gzip)
{
-#if HAVE_ZLIB_H
struct archive_entry *ae;
struct archive *a;
+ int r;
+
assert((a = archive_read_new()) != NULL);
assert(0 == archive_read_support_compression_all(a));
assert(0 == archive_read_support_format_all(a));
assert(0 == archive_read_open_memory(a, archive, sizeof(archive)));
- assert(0 == archive_read_next_header(a, &ae));
+ r = archive_read_next_header(a, &ae);
+ if (UnsupportedCompress(r, a)) {
+ skipping("Skipping GZIP compression check: "
+ "This version of libarchive was compiled "
+ "without gzip support");
+ goto finish;
+ }
+ assert(0 == r);
assert(archive_compression(a) == ARCHIVE_COMPRESSION_GZIP);
assert(archive_format(a) == ARCHIVE_FORMAT_CPIO_SVR4_NOCRC);
assert(0 == archive_read_close(a));
+finish:
#if ARCHIVE_VERSION_NUMBER < 2000000
archive_read_finish(a);
#else
assert(0 == archive_read_finish(a));
#endif
-#else
- skipping("Need zlib");
-#endif
}
diff --git a/lib/libarchive/test/test_read_format_gtar_gz.c b/lib/libarchive/test/test_read_format_gtar_gz.c
index afced28..6d3b66d 100644
--- a/lib/libarchive/test/test_read_format_gtar_gz.c
+++ b/lib/libarchive/test/test_read_format_gtar_gz.c
@@ -34,25 +34,31 @@ static unsigned char archive[] = {
DEFINE_TEST(test_read_format_gtar_gz)
{
-#if HAVE_ZLIB_H
struct archive_entry *ae;
struct archive *a;
+ int r;
+
assert((a = archive_read_new()) != NULL);
assert(0 == archive_read_support_compression_all(a));
assert(0 == archive_read_support_format_all(a));
assert(0 == archive_read_open_memory(a, archive, sizeof(archive)));
- assert(0 == archive_read_next_header(a, &ae));
+ r = archive_read_next_header(a, &ae);
+ if (UnsupportedCompress(r, a)) {
+ skipping("Skipping GZIP compression check: "
+ "This version of libarchive was compiled "
+ "without gzip support");
+ goto finish;
+ }
+ assert(0 == r);
assert(archive_compression(a) == ARCHIVE_COMPRESSION_GZIP);
assert(archive_format(a) == ARCHIVE_FORMAT_TAR_GNUTAR);
assert(0 == archive_read_close(a));
+finish:
#if ARCHIVE_VERSION_NUMBER < 2000000
archive_read_finish(a);
#else
assert(0 == archive_read_finish(a));
#endif
-#else
- skipping("Need zlib");
-#endif
}
diff --git a/lib/libarchive/test/test_read_format_iso_gz.c b/lib/libarchive/test/test_read_format_iso_gz.c
index 9e61f87..6a9172f 100644
--- a/lib/libarchive/test/test_read_format_iso_gz.c
+++ b/lib/libarchive/test/test_read_format_iso_gz.c
@@ -53,9 +53,10 @@ static unsigned char archive[] = {
DEFINE_TEST(test_read_format_iso_gz)
{
-#if HAVE_ZLIB_H
struct archive_entry *ae;
struct archive *a;
+ int r;
+
assert((a = archive_read_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK,
archive_read_support_compression_all(a));
@@ -63,18 +64,23 @@ DEFINE_TEST(test_read_format_iso_gz)
archive_read_support_format_all(a));
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, archive, sizeof(archive)));
- assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ r = archive_read_next_header(a, &ae);
+ if (UnsupportedCompress(r, a)) {
+ skipping("Skipping GZIP compression check: "
+ "This version of libarchive was compiled "
+ "without gzip support");
+ goto finish;
+ }
+ assertEqualIntA(a, ARCHIVE_OK, r);
assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_GZIP);
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_ISO9660);
assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+finish:
#if ARCHIVE_VERSION_NUMBER < 2000000
archive_read_finish(a);
#else
assertEqualInt(ARCHIVE_OK, archive_read_finish(a));
#endif
-#else
- skipping("Need zlib");
-#endif
}
diff --git a/lib/libarchive/test/test_read_format_pax_bz2.c b/lib/libarchive/test/test_read_format_pax_bz2.c
index 9490440..e0d0d2a 100644
--- a/lib/libarchive/test/test_read_format_pax_bz2.c
+++ b/lib/libarchive/test/test_read_format_pax_bz2.c
@@ -42,25 +42,31 @@ static unsigned char archive[] = {
DEFINE_TEST(test_read_format_pax_bz2)
{
-#if HAVE_BZLIB_H
struct archive_entry *ae;
struct archive *a;
+ int r;
+
assert((a = archive_read_new()) != NULL);
assert(0 == archive_read_support_compression_all(a));
assert(0 == archive_read_support_format_all(a));
assert(0 == archive_read_open_memory(a, archive, sizeof(archive)));
- assert(0 == archive_read_next_header(a, &ae));
+ r = archive_read_next_header(a, &ae);
+ if (UnsupportedCompress(r, a)) {
+ skipping("Skipping BZIP2 compression check: "
+ "This version of libarchive was compiled "
+ "without bzip2 support");
+ goto finish;
+ }
+ assert(0 == r);
assert(archive_compression(a) == ARCHIVE_COMPRESSION_BZIP2);
assert(archive_format(a) == ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE);
assert(0 == archive_read_close(a));
+finish:
#if ARCHIVE_VERSION_NUMBER < 2000000
archive_read_finish(a);
#else
assert(0 == archive_read_finish(a));
#endif
-#else
- skipping("Need bzlib");
-#endif
}
diff --git a/lib/libarchive/test/test_read_format_tbz.c b/lib/libarchive/test/test_read_format_tbz.c
index 3b44592..3d0e474 100644
--- a/lib/libarchive/test/test_read_format_tbz.c
+++ b/lib/libarchive/test/test_read_format_tbz.c
@@ -35,25 +35,31 @@ static unsigned char archive[] = {
DEFINE_TEST(test_read_format_tbz)
{
-#if HAVE_BZLIB_H
struct archive_entry *ae;
struct archive *a;
+ int r;
+
assert((a = archive_read_new()) != NULL);
assert(0 == archive_read_support_compression_all(a));
assert(0 == archive_read_support_format_all(a));
assert(0 == archive_read_open_memory(a, archive, sizeof(archive)));
- assert(0 == archive_read_next_header(a, &ae));
+ r = archive_read_next_header(a, &ae);
+ if (UnsupportedCompress(r, a)) {
+ skipping("Skipping BZIP2 compression check: "
+ "This version of libarchive was compiled "
+ "without bzip2 support");
+ goto finish;
+ }
+ assert(0 == r);
assert(archive_compression(a) == ARCHIVE_COMPRESSION_BZIP2);
assert(archive_format(a) == ARCHIVE_FORMAT_TAR_USTAR);
assert(0 == archive_read_close(a));
+finish:
#if ARCHIVE_VERSION_NUMBER < 2000000
archive_read_finish(a);
#else
assert(0 == archive_read_finish(a));
#endif
-#else
- skipping("Need bzlib");
-#endif
}
diff --git a/lib/libarchive/test/test_read_format_tgz.c b/lib/libarchive/test/test_read_format_tgz.c
index 67f8e8a..4b3d420 100644
--- a/lib/libarchive/test/test_read_format_tgz.c
+++ b/lib/libarchive/test/test_read_format_tgz.c
@@ -34,25 +34,31 @@ static unsigned char archive[] = {
DEFINE_TEST(test_read_format_tgz)
{
-#if HAVE_ZLIB_H
struct archive_entry *ae;
struct archive *a;
+ int r;
+
assert((a = archive_read_new()) != NULL);
assert(0 == archive_read_support_compression_all(a));
assert(0 == archive_read_support_format_all(a));
assert(0 == archive_read_open_memory(a, archive, sizeof(archive)));
- assert(0 == archive_read_next_header(a, &ae));
+ r = archive_read_next_header(a, &ae);
+ if (UnsupportedCompress(r, a)) {
+ skipping("Skipping GZIP compression check: "
+ "This version of libarchive was compiled "
+ "without gzip support");
+ goto finish;
+ }
+ assert(0 == r);
assert(archive_compression(a) == ARCHIVE_COMPRESSION_GZIP);
assert(archive_format(a) == ARCHIVE_FORMAT_TAR_USTAR);
assert(0 == archive_read_close(a));
+finish:
#if ARCHIVE_VERSION_NUMBER < 2000000
archive_read_finish(a);
#else
assert(0 == archive_read_finish(a));
#endif
-#else
- skipping("Need zlib");
-#endif
}
diff --git a/lib/libarchive/test/test_read_format_zip.c b/lib/libarchive/test/test_read_format_zip.c
index 77d6616..8c7059d 100644
--- a/lib/libarchive/test/test_read_format_zip.c
+++ b/lib/libarchive/test/test_read_format_zip.c
@@ -33,7 +33,6 @@ __FBSDID("$FreeBSD$");
DEFINE_TEST(test_read_format_zip)
{
-#if HAVE_ZLIB_H
const char *refname = "test_read_format_zip.zip";
struct archive_entry *ae;
struct archive *a;
@@ -41,6 +40,7 @@ DEFINE_TEST(test_read_format_zip)
const void *pv;
size_t s;
off_t o;
+ int r;
extract_reference_file(refname);
assert((a = archive_read_new()) != NULL);
@@ -59,7 +59,16 @@ DEFINE_TEST(test_read_format_zip)
assertEqualInt(1179604289, archive_entry_mtime(ae));
assertEqualInt(18, archive_entry_size(ae));
failure("archive_read_data() returns number of bytes read");
- assertEqualInt(18, archive_read_data(a, buff, 19));
+ r = archive_read_data(a, buff, 19);
+ if (r < ARCHIVE_OK) {
+ if (strcmp(archive_error_string(a),
+ "libarchive compiled without deflate support (no libz)") == 0) {
+ skipping("Skipping ZIP compression check: %s",
+ archive_error_string(a));
+ goto finish;
+ }
+ }
+ assertEqualInt(18, r);
assert(0 == memcmp(buff, "hello\nhello\nhello\n", 18));
assertA(0 == archive_read_next_header(a, &ae));
assertEqualString("file2", archive_entry_pathname(ae));
@@ -72,15 +81,12 @@ DEFINE_TEST(test_read_format_zip)
assertA(archive_compression(a) == ARCHIVE_COMPRESSION_NONE);
assertA(archive_format(a) == ARCHIVE_FORMAT_ZIP);
assert(0 == archive_read_close(a));
-
+finish:
#if ARCHIVE_VERSION_NUMBER < 2000000
archive_read_finish(a);
#else
assert(0 == archive_read_finish(a));
#endif
-#else
- skipping("Need zlib");
-#endif
}
diff --git a/lib/libarchive/test/test_write_compress_program.c b/lib/libarchive/test/test_write_compress_program.c
index c4cf933..e00e398 100644
--- a/lib/libarchive/test/test_write_compress_program.c
+++ b/lib/libarchive/test/test_write_compress_program.c
@@ -92,29 +92,26 @@ DEFINE_TEST(test_write_compress_program)
assertA(0 == archive_read_open_memory(a, buff, used));
r = archive_read_next_header(a, &ae);
- if (r != ARCHIVE_OK) {
- if (strcmp(archive_error_string(a),
- "Unrecognized archive format") == 0) {
- skipping("This version of libarchive was compiled "
- "without gzip support");
- assert(0 == archive_read_finish(a));
- /*
- * Try using an external "gunzip","gzip -d" program
- */
- if ((extprog = external_gzip_program(1)) == NULL) {
- skipping("There is no gzip uncompression "
- "program in this platform");
- return;
- }
- assert((a = archive_read_new()) != NULL);
- assertEqualIntA(a, ARCHIVE_OK,
- archive_read_support_compression_none(a));
- assertEqualIntA(a, ARCHIVE_OK,
- archive_read_support_compression_program(a, extprog));
- assertA(0 == archive_read_support_format_all(a));
- assertA(0 == archive_read_open_memory(a, buff, used));
- r = archive_read_next_header(a, &ae);
+ if (UnsupportedCompress(r, a)) {
+ skipping("This version of libarchive was compiled "
+ "without gzip support");
+ assert(0 == archive_read_finish(a));
+ /*
+ * Try using an external "gunzip","gzip -d" program
+ */
+ if ((extprog = external_gzip_program(1)) == NULL) {
+ skipping("There is no gzip uncompression "
+ "program in this platform");
+ return;
}
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_support_compression_none(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_support_compression_program(a, extprog));
+ assertA(0 == archive_read_support_format_all(a));
+ assertA(0 == archive_read_open_memory(a, buff, used));
+ r = archive_read_next_header(a, &ae);
}
assertA(0 == r);
OpenPOWER on IntegriCloud