]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
warc: test missing file size handling
authordatauwu <datauwu@users.noreply.github.com>
Sat, 4 Jul 2026 17:26:57 +0000 (01:26 +0800)
committerdatauwu <datauwu@users.noreply.github.com>
Sat, 4 Jul 2026 17:26:57 +0000 (01:26 +0800)
Add coverage for WARC entries without a known size. The writer
must reject these entries because WARC requires Content-Length.

libarchive/test/test_write_format_warc.c

index bb9f2388095b9bcfd621240530f701d32c0890eb..058a7da66fdbd90fe2b0e334a7e6071cfdf662a4 100644 (file)
@@ -143,3 +143,28 @@ DEFINE_TEST(test_write_format_warc)
 
        free(buff);
 }
+
+DEFINE_TEST(test_write_format_warc_size)
+{
+       struct archive *a;
+       struct archive_entry *ae;
+       char buff[2048];
+       size_t used;
+
+       memset(buff, 0, sizeof(buff));
+       assert((a = archive_write_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_warc(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_open_memory(a, buff, sizeof(buff), &used));
+
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_pathname(ae, "test");
+       archive_entry_set_filetype(ae, AE_IFREG);
+       assertEqualIntA(a, ARCHIVE_FAILED, archive_write_header(a, ae));
+       assertEqualString("Size required", archive_error_string(a));
+       archive_entry_free(ae);
+
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+}