]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Tests, provide known-good archive read test.
authorSebastian Freundt <freundt@ga-group.nl>
Tue, 10 Jun 2014 12:24:00 +0000 (12:24 +0000)
committerSebastian Freundt <freundt@ga-group.nl>
Tue, 10 Jun 2014 12:53:30 +0000 (12:53 +0000)
Makefile.am
libarchive/test/CMakeLists.txt
libarchive/test/test_read_format_warc.c [new file with mode: 0644]
libarchive/test/test_read_format_warc.warc.uu [new file with mode: 0644]

index f22fb303812670ff44fea63aeee0fcc90fb3ee60..7a8ce4bbcaec41577a17320f3ddb73c8cc156306 100644 (file)
@@ -441,6 +441,7 @@ libarchive_test_SOURCES= \
        libarchive/test/test_read_format_txz.c \
        libarchive/test/test_read_format_tz.c \
        libarchive/test/test_read_format_ustar_filename.c \
+       libarchive/test/test_read_format_warc.c \
        libarchive/test/test_read_format_xar.c \
        libarchive/test/test_read_format_zip.c \
        libarchive/test/test_read_format_zip_comment_stored.c \
index c5f10c351bb891fdb0cbb68cbf4323d6d1aa2569..42cbf7802ee7cc30c616e844904ab9c401b40128 100644 (file)
@@ -145,6 +145,7 @@ IF(ENABLE_TEST)
     test_read_format_txz.c
     test_read_format_tz.c
     test_read_format_ustar_filename.c
+    test_read_format_warc.c
     test_read_format_xar.c
     test_read_format_zip.c
     test_read_format_zip_comment_stored.c
diff --git a/libarchive/test/test_read_format_warc.c b/libarchive/test/test_read_format_warc.c
new file mode 100644 (file)
index 0000000..658ab8a
--- /dev/null
@@ -0,0 +1,82 @@
+/*-
+ * Copyright (c) 2014 Sebastian Freundt
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer
+ *    in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "test.h"
+__FBSDID("$FreeBSD$");
+
+
+DEFINE_TEST(test_read_format_warc)
+{
+       char buff[256U];
+       const char reffile[] = "test_read_format_warc.warc";
+       struct archive_entry *ae;
+       struct archive *a;
+
+       extract_reference_file(reffile);
+       assert((a = archive_read_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_read_open_filename(a, reffile, 10240));
+
+       /* First Entry */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString("sometest.txt", archive_entry_pathname(ae));
+       assertEqualInt(1402399833, archive_entry_mtime(ae));
+       assertEqualInt(0, archive_entry_uid(ae));
+       assertEqualInt(0, archive_entry_gid(ae));
+       assertEqualInt(AE_IFREG, archive_entry_filetype(ae));
+       assertEqualInt(65, archive_entry_size(ae));
+       assertEqualInt(65, archive_read_data(a, buff, sizeof(buff)));
+       assertEqualMem(buff, "This is a sample text file for libarchive's WARC reader/writer.\n\n", 65);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
+
+       /* Second Entry */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString("moretest.txt", archive_entry_pathname(ae));
+       assertEqualInt(1402399884, archive_entry_mtime(ae));
+       assertEqualInt(0, archive_entry_uid(ae));
+       assertEqualInt(0, archive_entry_gid(ae));
+       assertEqualInt(AE_IFREG, archive_entry_filetype(ae));
+       assertEqualInt(76, archive_entry_size(ae));
+       assertA(76 == archive_read_data(a, buff, sizeof(buff)));
+       assertEqualMem(buff, "The beauty is that WARC remains ASCII only iff all contents are ASCII only.\n", 76);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
+
+       /* Test EOF */
+       assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+       assertEqualInt(2, archive_file_count(a));
+
+       /* Verify archive format. */
+       assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
+       assertEqualIntA(a, ARCHIVE_FORMAT_WARC, archive_format(a));
+
+       /* Verify closing and resource freeing */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
diff --git a/libarchive/test/test_read_format_warc.warc.uu b/libarchive/test/test_read_format_warc.warc.uu
new file mode 100644 (file)
index 0000000..f89592b
--- /dev/null
@@ -0,0 +1,23 @@
+begin 644 test_read_format_warc.warc
+M5T%20R\Q+C`-"E=!4D,M5'EP93H@=V%R8VEN9F\-"E=!4D,M1&%T93H@,C`Q
+M-"TP-BTQ,%0Q,3HS,3HS.%H-"DQA<W0M36]D:69I960Z(#(P,30M,#8M,3!4
+M,3$Z,S$Z,SA:#0I705)#+5)E8V]R9"U)1#H@/'5R;CIU=6ED.C,U-68Y-V)B
+M+35C,C@M-&-D9"UB,3=A+6(P.#@W9F(Q8S(X8SX-"D-O;G1E;G0M5'EP93H@
+M87!P;&EC871I;VXO=V%R8RUF:65L9',-"D-O;G1E;G0M3&5N9W1H.B`U.0T*
+M#0IS;V9T=V%R93H@;&EB87)C:&EV92\S+C$N,@T*9F]R;6%T.B!705)#(&9I
+M;&4@=F5R<VEO;B`Q+C`-"@T*#0I705)#+S$N,`T*5T%20RU4>7!E.B!R97-O
+M=7)C90T*5T%20RU487)G970M55)).B!F:6QE.B\O<V]M971E<W0N='AT#0I7
+M05)#+41A=&4Z(#(P,30M,#8M,3!4,3$Z,S$Z,SA:#0I,87-T+4UO9&EF:65D
+M.B`R,#$T+3`V+3$P5#$Q.C,P.C,S6@T*5T%20RU296-O<F0M240Z(#QU<FXZ
+M=75I9#HW-3EA8S(V-"TV-C5D+31C864M.6(U92UA9C0R,69A-#,P-30^#0I#
+M;VYT96YT+4QE;F=T:#H@-C4-"@T*5&AI<R!I<R!A('-A;7!L92!T97AT(&9I
+M;&4@9F]R(&QI8F%R8VAI=F4G<R!705)#(')E861E<B]W<FET97(N"@H-"@T*
+M5T%20R\Q+C`-"E=!4D,M5'EP93H@<F5S;W5R8V4-"E=!4D,M5&%R9V5T+552
+M23H@9FEL93HO+VUO<F5T97-T+G1X=`T*5T%20RU$871E.B`R,#$T+3`V+3$P
+M5#$Q.C,Q.C,X6@T*3&%S="U-;V1I9FEE9#H@,C`Q-"TP-BTQ,%0Q,3HS,3HR
+M-%H-"E=!4D,M4F5C;W)D+4E$.B`\=7)N.G5U:60Z-S%A-&8X,C$M-C0U-"TT
+M9#(S+6$Y-S(M-#DW939D,C5C9C=F/@T*0V]N=&5N="U,96YG=&@Z(#<V#0H-
+M"E1H92!B96%U='D@:7,@=&AA="!705)#(')E;6%I;G,@05-#24D@;VYL>2!I
+D9F8@86QL(&-O;G1E;G1S(&%R92!!4T-)22!O;FQY+@H-"@T*
+`
+end