test_xar("compression=xz,compression-level=1");
test_xar("compression=xz,compression-level=9");
}
+
+DEFINE_TEST(test_write_format_xar_entry_trunc)
+{
+ struct archive *a;
+ struct archive_entry *ae;
+ unsigned char buff[1024];
+ size_t used = 0;
+
+ assert((a = archive_write_new()) != NULL);
+ if (archive_write_set_format_xar(a) != ARCHIVE_OK) {
+ skipping("xar is not supported on this platform");
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+ return;
+ }
+ 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, "foo");
+ archive_entry_set_mode(ae, S_IFREG | 0644);
+ archive_entry_set_size(ae, 1028);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+ archive_entry_free(ae);
+ assertEqualIntA(a, 3, archive_write_data(a, "foo", 3));
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+}