]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Test the case where we try to invoke a non-existent read filter program.
authorTim Kientzle <kientzle@gmail.com>
Wed, 1 Apr 2009 01:35:59 +0000 (21:35 -0400)
committerTim Kientzle <kientzle@gmail.com>
Wed, 1 Apr 2009 01:35:59 +0000 (21:35 -0400)
SVN-Revision: 879

libarchive/test/test_read_compress_program.c

index 01149736d964f42e8766cb0bee81d3e4830246e7..9f1284e9dc968e30b58f4ab460f51a671dfa8bc2 100644 (file)
@@ -35,14 +35,34 @@ static unsigned char archive[] = {
 DEFINE_TEST(test_read_compress_program)
 {
        int r;
-
-#if ARCHIVE_VERSION_NUMBER < 1009000
-       skipping("archive_read_support_compression_program()");
-#else
        struct archive_entry *ae;
        struct archive *a;
        const char *extprog;
 
+       /*
+        * First, test handling when a non-existent compression
+        * program is requested.
+        */
+       assert((a = archive_read_new()) != NULL);
+       r = archive_read_support_compression_program(a, "nonexistent");
+       if (r == ARCHIVE_FATAL) {
+               skipping("archive_read_support_compression_program() "
+                   "unsupported on this platform");
+               return;
+       }
+       assertEqualIntA(a, ARCHIVE_OK, r);
+       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_FATAL,
+           archive_read_next_header(a, &ae));
+       assertEqualIntA(a, ARCHIVE_WARN, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_finish(a));
+
+       /*
+        * If we have "gunzip", try using that.
+        */
        if ((extprog = external_gzip_program(1)) == NULL) {
                skipping("There is no gzip uncompression "
                    "program in this platform");
@@ -51,28 +71,18 @@ DEFINE_TEST(test_read_compress_program)
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK,
            archive_read_support_compression_none(a));
-       r = archive_read_support_compression_program(a, extprog);
-       if (r == ARCHIVE_FATAL) {
-               skipping("archive_read_support_compression_program() "
-                   "unsupported on this platform");
-               return;
-       }
-       assertEqualIntA(a, ARCHIVE_OK, r);
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_read_support_compression_program(a, extprog));
        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));
-       assert(archive_compression(a) == ARCHIVE_COMPRESSION_PROGRAM);
-       assert(archive_format(a) == ARCHIVE_FORMAT_TAR_USTAR);
-       assert(0 == archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
-       archive_read_finish(a);
-#else
-       assert(0 == archive_read_finish(a));
-#endif
-#endif
+       assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_PROGRAM);
+       assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_finish(a));
 }