about summary refs log tree commit homepage
path: root/t
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2019-10-31 00:33:04 +0000
committerEric Wong <e@80x24.org>2019-10-31 00:33:50 +0000
commit130af18f06ae9b91e07985ff56b4dd90cedbd744 (patch)
tree8b26f39c874649ccc9d9746410f13c7222b5212b /t
parent7375e589c165cd0c5bae2d70ff8e279fb76216a2 (diff)
downloadpublic-inbox-130af18f06ae9b91e07985ff56b4dd90cedbd744.tar.gz
msgiter: do not assume UTF-8 if Email::MIME->body_str succeeds
ISO-2202-JP and other non-UTF-8 messages need to be displayed
correctly.

Fixes: 7d82a8bc04ce ('handle "multipart/mixed" messages which are not multipart')
Diffstat (limited to 't')
-rw-r--r--t/iso-2202-jp.mbox10
-rw-r--r--t/msg_iter.t18
2 files changed, 28 insertions, 0 deletions
diff --git a/t/iso-2202-jp.mbox b/t/iso-2202-jp.mbox
new file mode 100644
index 00000000..1a8e1974
--- /dev/null
+++ b/t/iso-2202-jp.mbox
@@ -0,0 +1,10 @@
+From historical@ruby-dev Thu Jan  1 00:00:00 1970
+Message-Id: <199707281508.AAA24167@hoyogw.example>
+Date: Tue, 29 Jul 97 00:08:29 +0900
+From: matz@example.com
+Subject: [ruby-dev:4]
+To: ruby-dev@example
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-2022-JP
+
+|$B$1$$$8$e!w:#$O%U%j!<(B(^^;;;$B$G$9(B.
diff --git a/t/msg_iter.t b/t/msg_iter.t
index f6fd3bb0..f9b586f1 100644
--- a/t/msg_iter.t
+++ b/t/msg_iter.t
@@ -40,5 +40,23 @@ use_ok('PublicInbox::MsgIter');
                 'nested part shows up properly');
 }
 
+{
+        my $f = 't/iso-2202-jp.mbox';
+        my $mime = Email::MIME->new(do {
+                open my $fh, '<', $f or die "open($f): $!";
+                local $/;
+                <$fh>;
+        });
+        my $raw = '';
+        msg_iter($mime, sub {
+                my ($part, $level, @ex) = @{$_[0]};
+                my ($s, $err) = msg_part_text($part, 'text/plain');
+                ok(!$err, 'no error');
+                $raw .= $s;
+        });
+        ok(length($raw) > 0, 'got non-empty message');
+        is(index($raw, '$$$'), -1, 'no unescaped $$$');
+}
+
 done_testing();
 1;