aboutsummaryrefslogtreecommitdiff
path: root/contrib/libarchive/libarchive/test/test_read_format_rar.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/libarchive/libarchive/test/test_read_format_rar.c')
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_rar.c85
1 files changed, 69 insertions, 16 deletions
diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar.c b/contrib/libarchive/libarchive/test/test_read_format_rar.c
index 1425eb9a4570..dce567af48a9 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_rar.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_rar.c
@@ -214,6 +214,14 @@ DEFINE_TEST(test_read_format_rar_unicode_UTF8)
assert((a = archive_read_new()) != NULL);
assertA(0 == archive_read_support_filter_all(a));
assertA(0 == archive_read_support_format_all(a));
+#if defined(_WIN32) && !defined(__CYGWIN__)
+ /* Windows will use OEMCP as default, but the file is UTF-8. */
+ if (ARCHIVE_OK != archive_read_set_options(a, "rar:hdrcharset=UTF-8")) {
+ skipping("This system cannot read input as UTF-8.");
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+ return;
+ }
+#endif
assertA(0 == archive_read_open_filename(a, reffile, 10240));
/* First header. */
@@ -879,16 +887,9 @@ DEFINE_TEST(test_read_format_rar_windows)
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
}
-DEFINE_TEST(test_read_format_rar_multivolume)
+static void
+test_read_format_rar_multivolume_test_body_helper(struct archive *a)
{
- const char *reffiles[] =
- {
- "test_read_format_rar_multivolume.part0001.rar",
- "test_read_format_rar_multivolume.part0002.rar",
- "test_read_format_rar_multivolume.part0003.rar",
- "test_read_format_rar_multivolume.part0004.rar",
- NULL
- };
int file1_size = 241647978, offset = 0;
char buff[64];
const char file1_test_txt[] = "gin-bottom: 0in\"><BR>\n</P>\n</BODY>\n"
@@ -903,13 +904,6 @@ DEFINE_TEST(test_read_format_rar_multivolume)
int file3_size = sizeof(file3_buff);
const char file3_test_txt[] = "test text document\r\n";
struct archive_entry *ae;
- struct archive *a;
-
- extract_reference_files(reffiles);
- assert((a = archive_read_new()) != NULL);
- assertA(0 == archive_read_support_filter_all(a));
- assertA(0 == archive_read_support_format_all(a));
- assertA(0 == archive_read_open_filenames(a, reffiles, 10240));
/* First header. */
assertA(0 == archive_read_next_header(a, &ae));
@@ -1016,6 +1010,65 @@ DEFINE_TEST(test_read_format_rar_multivolume)
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
}
+DEFINE_TEST(test_read_format_rar_multivolume)
+{
+ const char *reffiles[] =
+ {
+ "test_read_format_rar_multivolume.part0001.rar",
+ "test_read_format_rar_multivolume.part0002.rar",
+ "test_read_format_rar_multivolume.part0003.rar",
+ "test_read_format_rar_multivolume.part0004.rar",
+ NULL
+ };
+
+ struct archive *a;
+
+ extract_reference_files(reffiles);
+ assert((a = archive_read_new()) != NULL);
+ assertA(0 == archive_read_support_filter_all(a));
+ assertA(0 == archive_read_support_format_all(a));
+ assertA(0 == archive_read_open_filenames(a, reffiles, 10240));
+
+ test_read_format_rar_multivolume_test_body_helper(a);
+}
+
+/* As above, but using read_open_filenames_w */
+DEFINE_TEST(test_read_format_rar_multivolume_w)
+{
+#if defined(_WIN32) && !defined(__CYGWIN__)
+ const char *reffiles[] =
+ {
+ "test_read_format_rar_multivolume.part0001.rar",
+ "test_read_format_rar_multivolume.part0002.rar",
+ "test_read_format_rar_multivolume.part0003.rar",
+ "test_read_format_rar_multivolume.part0004.rar",
+ NULL
+ };
+
+ const wchar_t *wreffiles[] =
+ {
+ L"test_read_format_rar_multivolume.part0001.rar",
+ L"test_read_format_rar_multivolume.part0002.rar",
+ L"test_read_format_rar_multivolume.part0003.rar",
+ L"test_read_format_rar_multivolume.part0004.rar",
+ NULL
+ };
+
+ struct archive *a;
+
+ extract_reference_files(reffiles);
+ assert((a = archive_read_new()) != NULL);
+ assertA(0 == archive_read_support_filter_all(a));
+ assertA(0 == archive_read_support_format_all(a));
+ assertA(0 == archive_read_open_filenames_w(a, wreffiles, 10240));
+
+ test_read_format_rar_multivolume_test_body_helper(a);
+#else
+ skipping("archive_read_open_filenames_w is not available on this platform");
+ return;
+#endif
+}
+
DEFINE_TEST(test_read_format_rar_multivolume_skip)
{
const char *reffiles[] =