X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=t%2Fmime.t;h=471f0efa99533fa3a58697e482f5eb0fdc739bc3;hb=13a2fcc724576a78d0955f64dc0f4494545153c3;hp=b0e2290ea7016ac9e665bae7476ed7bb7eb77a41;hpb=cb8fc8c39d0a820b35ed3384c35122aaa66f9a6f;p=public-inbox.git
diff --git a/t/mime.t b/t/mime.t
index b0e2290e..471f0efa 100644
--- a/t/mime.t
+++ b/t/mime.t
@@ -1,16 +1,23 @@
-# Copyright (C) 2017 all contributors
+#!perl -w
+# Copyright (C) 2017-2021 all contributors
# This library is free software; you can redistribute it and/or modify
# it under the same terms as Perl itself.
# Artistic or GPL-1+
use strict;
-use warnings;
use Test::More;
-use_ok 'PublicInbox::MIME';
+use PublicInbox::TestCommon;
use PublicInbox::MsgIter;
-
-local $SIG{__WARN__} = sub {};
-my $msg = PublicInbox::MIME->new(
-'From: Richard Hansen
+my @classes = qw(PublicInbox::Eml);
+SKIP: {
+ require_mods('Email::MIME', 1);
+ push @classes, 'PublicInbox::MIME';
+};
+use_ok $_ for @classes;
+local $SIG{__WARN__} = sub {}; # needed for old Email::Simple (used by E::M)
+
+for my $cls (@classes) {
+ my $msg = $cls->new(<<'EOF');
+From: Richard Hansen
To: git@vger.kernel.org
Cc: Richard Hansen
Subject: [PATCH 0/2] minor diff orderfile documentation improvements
@@ -40,10 +47,11 @@ Content-Description: (truncated) S/MIME Cryptographic Signature
dkTlB69771K2eXK4LcHSH/2LqX+VYa3K44vrx1ruzjXdNWzIpKBy0weFNiwnJCGofvCysM2RCSI1
--94eb2c0bc864b76ba30545b2bca9--
-');
+EOF
-my @parts = $msg->parts;
-my $exp = 'Richard Hansen (2):
+ my @parts = $msg->subparts;
+ my $exp = <isa('Email::MIME'), 'compatible with Email::MIME');
-is($parts[0]->body, $exp, 'body matches expected');
+EOF
+ is($parts[0]->body, $exp, 'body matches expected');
-my $raw = q^Date: Wed, 18 Jan 2017 13:28:32 -0500
+ my $raw = <<'EOF';
+Date: Wed, 18 Jan 2017 13:28:32 -0500
From: Santiago Torres
To: Junio C Hamano
Cc: git@vger.kernel.org, peff@peff.net, sunshine@sunshineco.com,
@@ -92,27 +99,30 @@ Content-Type: application/pgp-signature; name="signature.asc"
--r24xguofrazenjwe--
-^;
-
-$msg = PublicInbox::MIME->new($raw);
-my $nr = 0;
-msg_iter($msg, sub {
- my ($part, $level, @ex) = @{$_[0]};
- if ($ex[0] == 1) {
- is($part->body_str, "your tree directly? \r\n", 'body OK');
- } elsif ($ex[0] == 2) {
- is($part->body, "-----BEGIN PGP SIGNATURE-----\n\n" .
- "=7wIb\n" .
- "-----END PGP SIGNATURE-----\n",
- 'sig "matches"');
- } else {
- fail "unexpected part\n";
- }
- $nr++;
-});
-
-is($nr, 2, 'got 2 parts');
-is($msg->as_string, $raw,
- 'stringified sufficiently close to original');
+EOF
+
+ $msg = $cls->new($raw);
+ my $nr = 0;
+ msg_iter($msg, sub {
+ my ($part, $level, @ex) = @{$_[0]};
+ is($level, 1, 'at expected level');
+ if (join('fail if $#ex > 0', @ex) eq '1') {
+ is($part->body_str, "your tree directly? \r\n",
+ 'body OK');
+ } elsif (join('fail if $#ex > 0', @ex) eq '2') {
+ is($part->body, "-----BEGIN PGP SIGNATURE-----\n\n" .
+ "=7wIb\n" .
+ "-----END PGP SIGNATURE-----\n",
+ 'sig "matches"');
+ } else {
+ fail "unexpected part\n";
+ }
+ $nr++;
+ });
+
+ is($nr, 2, 'got 2 parts');
+ is($msg->as_string, $raw,
+ 'stringified sufficiently close to original');
+}
done_testing();