From 099fb8133f33976d52baffc816fe584d04d59e81 Mon Sep 17 00:00:00 2001 From: Claybird Date: Thu, 7 Nov 2019 23:32:53 +0900 Subject: [PATCH] Updated test case. This is to cover cases where dirname and filename have different codepages. --- .../test_read_format_lha_filename_utf16.c | 63 +++++++++++++------ ...test_read_format_lha_filename_utf16.lzh.uu | 12 +++- 2 files changed, 54 insertions(+), 21 deletions(-) diff --git a/libarchive/test/test_read_format_lha_filename_utf16.c b/libarchive/test/test_read_format_lha_filename_utf16.c index e1d62fc54..c544aac7a 100644 --- a/libarchive/test/test_read_format_lha_filename_utf16.c +++ b/libarchive/test/test_read_format_lha_filename_utf16.c @@ -61,36 +61,59 @@ test_read_format_lha_filename_UTF16_UTF8(const char *refname) assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a, refname, 10240)); - /* Verify regular file. */ - assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + /* Note that usual Japanese filenames are tested in other cases */ #if defined(__APPLE__) - /* NFD normalization */ - assertEqualString("\x55\xcc\x88\x4f\xcc\x88\x41\xcc\x88\x75\xcc\x88\x6f" - "\xcc\x88\x61\xcc\x88/\x61\xcc\x88\x6f\xcc\x88\x75\xcc\x88\x41\xcc\x88" - "\x4f\xcc\x88\x55\xcc\x88.txt", - archive_entry_pathname(ae)); + /* NFD normalization */ + /* U:O:A:u:o:a: */ + #define UMLAUT_DIRNAME "\x55\xcc\x88\x4f\xcc\x88\x41\xcc\x88\x75\xcc\x88\x6f"\ + "\xcc\x88\x61\xcc\x88/" + /* a:o:u:A:O:U:.txt */ + #define UMLAUT_FNAME "\x61\xcc\x88\x6f\xcc\x88\x75\xcc\x88\x41\xcc\x88"\ + "\x4f\xcc\x88\x55\xcc\x88.txt" #else - /* NFC normalization */ - assertEqualString("\xc3\x9c\xc3\x96\xc3\x84\xc3\xbc\xc3\xb6\xc3\xa4/" - "\xc3\xa4\xc3\xb6\xc3\xbc\xc3\x84\xc3\x96\xc3\x9c.txt", - archive_entry_pathname(ae)); + /* NFC normalization */ + /* U:O:A:u:o:a: */ + #define UMLAUT_DIRNAME "\xc3\x9c\xc3\x96\xc3\x84\xc3\xbc\xc3\xb6\xc3\xa4/" + /* a:o:u:A:O:U:.txt */ + #define UMLAUT_FNAME "\xc3\xa4\xc3\xb6\xc3\xbc\xc3\x84\xc3\x96\xc3\x9c.txt" #endif + +/* "Test" in Japanese Katakana */ +#define KATAKANA_FNAME "\xe3\x83\x86\xe3\x82\xb9\xe3\x83\x88.txt" +#define KATAKANA_DIRNAME "\xe3\x83\x86\xe3\x82\xb9\xe3\x83\x88/" + + /* Verify regular file. U:O:A:u:o:a:/a:o:u:A:O:U:.txt */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString(UMLAUT_DIRNAME UMLAUT_FNAME, archive_entry_pathname(ae)); assertEqualInt(12, archive_entry_size(ae)); - /* Verify directory. */ + /* Verify directory. U:O:A:u:o:a:/ */ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); -#if defined(__APPLE__) - /* NFD normalization */ - assertEqualString("\x55\xcc\x88\x4f\xcc\x88\x41\xcc\x88\x75\xcc\x88\x6f" - "\xcc\x88\x61\xcc\x88/", + assertEqualString(UMLAUT_DIRNAME, archive_entry_pathname(ae)); + assertEqualInt(0, archive_entry_size(ae)); + + /* Verify regular file. U:O:A:u:o:a:/("Test" in Japanese).txt */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString(UMLAUT_DIRNAME KATAKANA_FNAME, archive_entry_pathname(ae)); -#else - /* NFC normalization */ - assertEqualString("\xc3\x9c\xc3\x96\xc3\x84\xc3\xbc\xc3\xb6\xc3\xa4/", + assertEqualInt(25, archive_entry_size(ae)); + + /* Verify regular file. ("Test" in Japanese)/a:o:u:A:O:U:.txt */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString(KATAKANA_DIRNAME UMLAUT_FNAME, archive_entry_pathname(ae)); -#endif + assertEqualInt(12, archive_entry_size(ae)); + + /* Verify directory. ("Test" in Japanese)/ */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString(KATAKANA_DIRNAME, archive_entry_pathname(ae)); assertEqualInt(0, archive_entry_size(ae)); + /* Verify regular file. a:o:u:A:O:U:.txt */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString(UMLAUT_FNAME, archive_entry_pathname(ae)); + assertEqualInt(12, archive_entry_size(ae)); + /* End of archive. */ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); diff --git a/libarchive/test/test_read_format_lha_filename_utf16.lzh.uu b/libarchive/test/test_read_format_lha_filename_utf16.lzh.uu index 6ca1313c7..ca5da7a64 100644 --- a/libarchive/test/test_read_format_lha_filename_utf16.lzh.uu +++ b/libarchive/test/test_read_format_lha_filename_utf16.lzh.uu @@ -4,6 +4,16 @@ M``)?7U]?7U__%P!$Y`#V`/P`Q`#6`-P`+@!T`'@`=``1`$7<`-8`Q`#\`/8` MY`#__QL`078S9B"U0$H^DQ_F(+5 -2`2CZ3'^8@M4!!@``GW<'```` +M`2CZ3'^8@M4!!@``GW<'``!J`"UL:#`M&0```!D```!V)L1=(`*CNTT'`$:D +M`P``#0`!@V6#6(-G+G1X=`H``E]?7U]?7_\1`$7<`-8`Q`#\`/8`Y`#__QL` +M00IF#4J@E-4!L"5C?'65U0&P)6-\=975`08``$%^!P``5&5S="!I;B!*87!A +M;F5S92!+871A:V%N87L`+6QH,"T,````#````+#U6%T@`J=Q30<`1J0#```- +M``%?7U]?7U\N='AT"@`"@V6#6(-G_Q<`1.0`]@#\`,0`U@#<`"X`=`!X`'0` +M"P!%QC"Y,,@P__\;`$'D5O!-H)35`?4-F(*15=4!Y%;P3:"4U0$&``"A+0<` +M`,.DP[;#O,.$PY;#G%0`+6QH9"T``````````-3`PET@`@``30<`1J0#```# +M``$*``*#98-8@V?_!0!`$``;`$%%!\Y.H)35`3/_]%&@E-4!,__T4:"4U0$& +M``!>;@<``&8`+6QH,"T,````#````+#U6%T@`J=Q30<`1J0#```-``%?7U]? +M7U\N='AT%P!$Y`#V`/P`Q`#6`-P`+@!T`'@`=``;`$'D5O!-H)35`?4-F(*1 +@5=4!Y%;P3:"4U0$&``"M>`<``,.DP[;#O,.$PY;#G`#D ` end -- 2.47.2