* [PATCH] use Email::MIME::Header::header_raw to read Message-ID
@ 2016-03-03 3:23 Eric Wong
0 siblings, 0 replies; only message in thread
From: Eric Wong @ 2016-03-03 3:23 UTC (permalink / raw)
To: meta
Somebody could set a Message-ID using MIME header encoding and
trigger mismatches. Favor the non-encoded value for storage
instead. This removes the explicit dependency on Email::Simple
entirely to reduce a step in the installation process (however
Email::MIME still pulls it in).
---
INSTALL | 1 -
Makefile.PL | 1 -
lib/Ssoma/Git.pm | 26 +++++++++++++-------------
lib/Ssoma/MDA.pm | 23 +++++++++++------------
lib/Ssoma/Remover.pm | 22 +++++++++++-----------
ssoma-mda | 6 +++---
ssoma-rm | 6 +++---
t/all.t | 22 +++++++++++-----------
| 26 +++++++++++++-------------
| 6 +++---
t/mda-conflict.t | 10 +++++-----
t/mda-missing-mid.t | 6 +++---
t/remover.t | 18 +++++++++---------
13 files changed, 85 insertions(+), 88 deletions(-)
diff --git a/INSTALL b/INSTALL
index 3f8702e..d907ea3 100644
--- a/INSTALL
+++ b/INSTALL
@@ -39,7 +39,6 @@ convenience.
- Email::Address libemail-address-perl
- Email::LocalDelivery libemail-localdelivery-perl
- Email::MIME libemail-mime-perl
- - Email::Simple libemail-simple-perl
- File::Path::Expand libfile-path-expand-perl
- IPC::Run libipc-run-perl
- Net::IMAP::Simple libnet-imap-simple-perl
diff --git a/Makefile.PL b/Makefile.PL
index 00326fc..6316423 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -17,7 +17,6 @@ WriteMakefile(
'Digest::SHA' => 0,
'Email::Address' => 0,
'Email::LocalDelivery' => 0,
- 'Email::Simple' => 0,
'Email::MIME' => 0,
'IPC::Run' => 0,
'File::Path::Expand' => 0,
diff --git a/lib/Ssoma/Git.pm b/lib/Ssoma/Git.pm
index 70548fd..bc31cdc 100644
--- a/lib/Ssoma/Git.pm
+++ b/lib/Ssoma/Git.pm
@@ -12,7 +12,7 @@ use warnings;
use File::Path qw/mkpath/;
use Fcntl qw/:DEFAULT :flock SEEK_END/;
use IO::Handle;
-use Email::Simple;
+use Email::MIME;
use Digest::SHA qw/sha1_hex/;
use IPC::Run qw/run/;
@@ -138,18 +138,18 @@ sub qx_sha1 {
}
# returns a blob identifier the new message
-sub simple_to_blob {
- my ($self, $simple) = @_;
+sub mime_to_blob {
+ my ($self, $mime) = @_;
$self->bidi_sha1(qw/git hash-object -w --stdin/, sub {
my ($io) = @_;
- print $io $simple->as_string or die "print failed: $!\n";
+ print $io $mime->as_string or die "print failed: $!\n";
});
}
-# converts the given object name to an Email::Simple object
-sub blob_to_simple {
+# converts the given object name to an Email::MIME object
+sub blob_to_mime {
my ($self, $obj) = @_;
- Email::Simple->new($self->cat_blob($obj));
+ Email::MIME->new($self->cat_blob($obj));
}
# returns key-value pairs of config directives in a hash
@@ -166,18 +166,18 @@ sub config_list {
}
# used to hash the relevant portions of a message when there are conflicts
-sub hash_simple2 {
- my ($self, $simple) = @_;
+sub hash_mime2 {
+ my ($self, $mime) = @_;
my $dig = Digest::SHA->new("SHA-1");
- $dig->add($simple->header("Subject"));
- $dig->add($simple->body);
+ $dig->add($mime->header("Subject"));
+ $dig->add($mime->body);
$dig->hexdigest;
}
# we currently only compare messages for equality based on
# Message-ID, Subject: header and body, nothing else.
-# both args are Email::Simple objects
-sub simple_eq {
+# both args are Email::MIME objects
+sub mime_eq {
my ($self, $cur, $new) = @_;
(($cur->header("Subject") eq $new->header("Subject")) &&
diff --git a/lib/Ssoma/MDA.pm b/lib/Ssoma/MDA.pm
index 68c9520..0a6d27d 100644
--- a/lib/Ssoma/MDA.pm
+++ b/lib/Ssoma/MDA.pm
@@ -21,18 +21,18 @@ sub blob_upgrade {
my $git = $self->{git};
my $obj = "$self->{ref}^0:$path";
- my $cur = $git->blob_to_simple($obj);
+ my $cur = $git->blob_to_mime($obj);
# do nothing if the messages match:
- return 0 if $git->simple_eq($cur, $new);
+ return 0 if $git->mime_eq($cur, $new);
# kill the old blob
$gii->remove($path);
# implicitly create a new tree via index with two messages
foreach my $mime ($cur, $new) {
- my $id = $git->simple_to_blob($mime);
- my $path2 = $git->hash_simple2($mime);
+ my $id = $git->mime_to_blob($mime);
+ my $path2 = $git->hash_mime2($mime);
$gii->update("100644", $id, "$path/$path2");
}
1;
@@ -49,8 +49,8 @@ sub tree_update {
$? == 0 or die "$cmd failed: $!\n";
chomp @tree;
- my $id = $git->simple_to_blob($new);
- my $path2 = $git->hash_simple2($new);
+ my $id = $git->mime_to_blob($new);
+ my $path2 = $git->hash_mime2($new);
# go through the existing tree and look for duplicates
foreach my $line (@tree) {
@@ -84,7 +84,7 @@ sub append {
if ($? == 0) { # rare, object already exists
chomp $type;
if ($once) {
- my $mid = $mime->header("Message-ID");
+ my $mid = $mime->header_obj->header_raw("Message-ID");
die "CONFLICT: Message-ID: $mid exists ($path)\n";
}
@@ -100,7 +100,7 @@ sub append {
die "CONFLICT: `$cmd' returned: $type\n";
}
} else { # new message, just create a blob, common
- my $id = $git->simple_to_blob($mime);
+ my $id = $git->mime_to_blob($mime);
$gii->update('100644', $id, $path);
}
@@ -119,18 +119,17 @@ sub append {
}
}
-# the main entry point takes an Email::Simple object
+# the main entry point takes an Email::MIME object
sub deliver {
my ($self, $mime, $once) = @_;
my $git = $self->{git};
-
# convert the Message-ID into a path
- my $mid = $mime->header("Message-ID");
+ my $mid = $mime->header_obj->header_raw("Message-ID");
# if there's no Message-ID, generate one to avoid too many conflicts
# leading to trees
if (!defined $mid || $mid =~ /\A\s*\z/) {
- $mid = '<' . $git->hash_simple2($mime) . '@localhost>';
+ $mid = '<' . $git->hash_mime2($mime) . '@localhost>';
$mime->header_set("Message-ID", $mid);
}
my $path = $git->mid2path($mid);
diff --git a/lib/Ssoma/Remover.pm b/lib/Ssoma/Remover.pm
index f1582ac..54724e8 100644
--- a/lib/Ssoma/Remover.pm
+++ b/lib/Ssoma/Remover.pm
@@ -11,22 +11,22 @@ sub new {
bless { git => $git, ref => "refs/heads/master" }, $class;
}
-sub remove_simple {
- my ($self, $simple) = @_;
+sub remove_mime {
+ my ($self, $mime) = @_;
my $git = $self->{git};
my $sub = sub {
$git->tmp_index_do(sub {
- $self->_remove($simple);
+ $self->_remove($mime);
});
};
$git->sync_do(sub { $git->tmp_git_do($sub) });
}
-# remove an Email::Simple object from the current index
+# remove an Email::MIME object from the current index
sub _remove {
- my ($self, $simple) = @_;
+ my ($self, $mime) = @_;
my $git = $self->{git};
- my $path = $git->mid2path($simple->header("Message-ID"));
+ my $path = $git->mid2path($mime->header_obj->header_raw("Message-ID"));
my $ref = $self->{ref};
my $tip = $git->qx_sha1("git rev-parse $ref^0");
my $obj = "$tip:$path";
@@ -36,16 +36,16 @@ sub _remove {
if ($type eq "tree") { # unlikely
$git->each_in_tree($obj, sub {
my ($blob_id, $xpath) = ($1, $2);
- my $tmp = $git->blob_to_simple($blob_id);
- if ($git->simple_eq($simple, $tmp)) {
+ my $tmp = $git->blob_to_mime($blob_id);
+ if ($git->mime_eq($mime, $tmp)) {
push @remove, "$path/$xpath";
} else {
push @keep, $blob_id;
}
});
} elsif ($type eq "blob") { # likely
- my $tmp = $git->blob_to_simple($obj);
- if ($git->simple_eq($simple, $tmp)) {
+ my $tmp = $git->blob_to_mime($obj);
+ if ($git->mime_eq($mime, $tmp)) {
push @remove, $path;
}
} else {
@@ -61,7 +61,7 @@ sub _remove {
$gii->remove($path);
$gii->update('100644', $blob_id, $path);
} elsif ((scalar(@keep) == 0) && ($type eq "tree")) {
- # this is not possible unless simple_eq changes over time
+ # this is not possible unless mime_eq changes over time
$gii->remove($path);
} # else: do nothing if (@keep > 1)
diff --git a/ssoma-mda b/ssoma-mda
index 5eacf75..8d16627 100755
--- a/ssoma-mda
+++ b/ssoma-mda
@@ -14,9 +14,9 @@ my $once = $ARGV[0] eq "-1";
my $repo = pop @ARGV or die "Usage: $usage\n";
my $git = Ssoma::Git->new($repo);
my $mda = Ssoma::MDA->new($git);
-my $simple;
+my $mime;
{
local $/;
- $simple = Email::MIME->new(<STDIN>);
+ $mime = Email::MIME->new(<STDIN>);
}
-$mda->deliver($simple, $once);
+$mda->deliver($mime, $once);
diff --git a/ssoma-rm b/ssoma-rm
index 06f61a1..f0e377c 100755
--- a/ssoma-rm
+++ b/ssoma-rm
@@ -11,9 +11,9 @@ use Ssoma::Remover;
my $dir = shift or die "usage: $usage\n";
my $git = Ssoma::Git->new($dir);
my $rm = Ssoma::Remover->new($git);
-my $simple;
+my $mime;
{
local $/; # slurp message from stdin
- $simple = Email::Simple->new(<>);
+ $mime = Email::MIME->new(<>);
};
-$rm->remove_simple($simple);
+$rm->remove_mime($mime);
diff --git a/t/all.t b/t/all.t
index b0232d8..4eef8b1 100644
--- a/t/all.t
+++ b/t/all.t
@@ -5,7 +5,7 @@ use strict;
use warnings;
use Test::More;
use File::Temp qw/tempdir/;
-use Email::Simple;
+use Email::MIME;
# test all command-line interfaces at once
my $mda = "blib/script/ssoma-mda";
my $cli = "blib/script/ssoma";
@@ -28,7 +28,7 @@ ok(-x $cli, "$cli is executable");
ok(-d $git_dir && -f "$git_dir/config", '$GIT_DIR exists and is bare');
# deliver the message
- my $simple = Email::Simple->new(<<'EOF');
+ my $mime = Email::MIME->new(<<'EOF');
From: me@example.com
To: u@example.com
Message-ID: <666@example.com>
@@ -42,7 +42,7 @@ EOF
exec($mda, $git_dir);
die "exec failed: $!\n";
}
- print $pipe $simple->as_string or die "print failed: $!\n";
+ print $pipe $mime->as_string or die "print failed: $!\n";
close $pipe or die "close pipe failed: $!\n";
is($?, 0, "$mda exited successfully");
@@ -90,7 +90,7 @@ EOF
{
# deliver an additional message
- my $simple = Email::Simple->new(<<'EOF');
+ my $mime = Email::MIME->new(<<'EOF');
From: moi@example.com
To: you@example.com
Message-ID: <666666@example.com>
@@ -104,7 +104,7 @@ EOF
exec($mda, "$tmp/input.git");
die "exec failed: $!\n";
}
- print $pipe $simple->as_string or die "print failed: $!\n";
+ print $pipe $mime->as_string or die "print failed: $!\n";
close $pipe or die "close pipe failed: $!\n";
is($?, 0, "$mda exited successfully");
}
@@ -152,7 +152,7 @@ EOF
# duplicate message delivered to MDA (for "ssoma cat" dup handling)
{
# deliver the message
- my $dup = Email::Simple->new(<<'EOF');
+ my $dup = Email::MIME->new(<<'EOF');
From: me@example.com
To: u@example.com
Message-ID: <666@example.com>
@@ -189,7 +189,7 @@ EOF
is(scalar @tree, 3, "three messages sitting in a tree");
# deliver the message to ssoma-rm
- my $simple = Email::Simple->new(<<'EOF');
+ my $mime = Email::MIME->new(<<'EOF');
From: me@example.com
To: u@example.com
Message-ID: <666@example.com>
@@ -203,7 +203,7 @@ EOF
exec($rm, $git_dir);
die "exec failed: $!\n";
}
- print $pipe $simple->as_string or die "print failed: $!\n";
+ print $pipe $mime->as_string or die "print failed: $!\n";
close $pipe or die "close pipe failed: $!\n";
is($?, 0, "$rm exited successfully");
@tree = `GIT_DIR=$git_dir git ls-tree -r HEAD`;
@@ -213,7 +213,7 @@ EOF
# duplicate detection
SKIP: {
skip "IPC::Run not available", 2 unless $have_ipc_run;
- my $simple = Email::Simple->new(<<'EOF');
+ my $mime = Email::MIME->new(<<'EOF');
From: moi@example.com
To: you@example.com
Message-ID: <666666@example.com>
@@ -221,9 +221,9 @@ Subject: xxx
OMFG
EOF
- $simple = $simple->as_string;
+ $mime = $mime->as_string;
my ($out, $err) = ("", "");
- run([$mda, "-1", "$tmp/input.git"], \$simple, \$out, \$err);
+ run([$mda, "-1", "$tmp/input.git"], \$mime, \$out, \$err);
isnt($?, 0, "$mda exited with failure");
like($err, qr/CONFLICT/, "conflict message detected");
}
--git a/t/extractor.t b/t/extractor.t
index 6a5c8f5..de8fe30 100644
--- a/t/extractor.t
+++ b/t/extractor.t
@@ -20,7 +20,7 @@ my $mailbox = "$outdir/mbox";
my $mdagit = Ssoma::Git->new("$mdadir/gittest");
$mdagit->init_db('-q');
my $mda = Ssoma::MDA->new($mdagit);
-my $email = Email::Simple->new(<<'EOF');
+my $email = Email::MIME->new(<<'EOF');
From: U <u@example.com>
To: Me <me@example.com>
Message-ID: <666@example.com>
@@ -60,8 +60,8 @@ my $check_last = sub {
open my $fh, '<', $f or die "opening $f failed: $!\n";
local $/;
my $s = <$fh>;
- my $simple = Email::Simple->new($s);
- is($simple->header('message-id'), '<666@example.com>',
+ my $mime = Email::MIME->new($s);
+ is($mime->header('message-id'), '<666@example.com>',
"delivered message-id matches");
$check_last->("target.mydir.last-imported");
unlink $f or die "failed to unlink $f: $!\n";
@@ -78,13 +78,13 @@ my $check_last = sub {
open my $fh, '<', $mailbox or die "opening $mailbox failed: $!\n";
local $/;
my $s = <$fh>;
- my $simple = Email::Simple->new($s);
- is($simple->header('message-id'), '<666@example.com>',
+ my $mime = Email::MIME->new($s);
+ is($mime->header('message-id'), '<666@example.com>',
"delivered message-id matches");
$check_last->("target.mybox.last-imported");
}
-my $another = Email::Simple->new(<<'EOF');
+my $another = Email::MIME->new(<<'EOF');
From: U <u@example.com>
To: Me <me@example.com>
Message-ID: <666666@example.com>
@@ -109,10 +109,10 @@ $mda->deliver($another);
open my $fh, '<', $f or die "opening $f failed: $!\n";
local $/;
my $s = <$fh>;
- my $simple = Email::Simple->new($s);
- is($simple->header('message-id'), '<666666@example.com>',
+ my $mime = Email::MIME->new($s);
+ is($mime->header('message-id'), '<666666@example.com>',
"delivered message-id matches");
- is($simple->body, "*yawn*\n", "body matches");
+ is($mime->body, "*yawn*\n", "body matches");
$check_last->("target.mydir.last-imported");
unlink $f or die "failed to unlink $f: $!\n"; # for next test
}
@@ -133,7 +133,7 @@ $mda->deliver($another);
# ensure we can handle conflicts w/o reimporting when the MDA
# upgrades a blob to a tree.
-my $conflict = Email::Simple->new(<<'EOF');
+my $conflict = Email::MIME->new(<<'EOF');
From: U <u@example.com>
To: Me <me@example.com>
Message-ID: <666666@example.com>
@@ -159,10 +159,10 @@ $mda->deliver($conflict);
open my $fh, '<', $f or die "opening $f failed: $!\n";
local $/;
my $s = <$fh>;
- my $simple = Email::Simple->new($s);
- is($simple->header('message-id'), '<666666@example.com>',
+ my $mime = Email::MIME->new($s);
+ is($mime->header('message-id'), '<666666@example.com>',
"delivered conflicting message-id matches");
- is($simple->body, "*YAWN*\n", "body matches on conflict");
+ is($mime->body, "*YAWN*\n", "body matches on conflict");
$check_last->("target.mydir.last-imported");
}
--git a/t/mda-badheaders.t b/t/mda-badheaders.t
index 0ce0762..01033aa 100644
--- a/t/mda-badheaders.t
+++ b/t/mda-badheaders.t
@@ -6,7 +6,7 @@ use warnings;
use Test::More;
use Ssoma::MDA;
use Ssoma::Git;
-use Email::Simple;
+use Email::MIME;
use Digest::SHA qw/sha1_hex/;
use File::Temp qw/tempdir/;
@@ -15,7 +15,7 @@ my $git = Ssoma::Git->new("$tmpdir/gittest");
$git->init_db('-q');
my $mda = Ssoma::MDA->new($git);
-my $email = Email::Simple->new("From: U <u\@example.com>\n\nHIHI\n");
+my $email = Email::MIME->new("From: U <u\@example.com>\n\nHIHI\n");
my %headers = (
"To" => "Me <me\@example.com>",
"From" => "You <you\@example.com>",
@@ -42,7 +42,7 @@ ok(defined $dir && defined $base, "bad sha1: $blob_id");
my $raw = `git cat-file blob HEAD:$dir/$base`;
is(0, $?, "git cat-file returned: $?");
-my $delivered = Email::Simple->new($raw);
+my $delivered = Email::MIME->new($raw);
is("HIHI\n", $delivered->body, "body matches");
foreach my $key (sort keys %headers) {
diff --git a/t/mda-conflict.t b/t/mda-conflict.t
index 84be907..47bf403 100644
--- a/t/mda-conflict.t
+++ b/t/mda-conflict.t
@@ -6,7 +6,7 @@ use warnings;
use Test::More;
use Ssoma::MDA;
use Ssoma::Git;
-use Email::Simple;
+use Email::MIME;
use Digest::SHA qw/sha1_hex/;
use File::Temp qw/tempdir/;
@@ -15,7 +15,7 @@ my $git = Ssoma::Git->new("$tmpdir/gittest");
$git->init_db('-q');
my $mda = Ssoma::MDA->new($git);
-my $email = Email::Simple->new("From: U <u\@example.com>\n\nHIHI\n");
+my $email = Email::MIME->new("From: U <u\@example.com>\n\nHIHI\n");
$email->header_set("To", "Me <me\@example.com>");
$email->header_set("Subject", ":o");
$email->header_set("Message-ID", "<12345\@example.com>");
@@ -46,8 +46,8 @@ is(2, scalar @tree, "two entries in tree");
foreach my $line (@tree) {
my ($mode, $type, $blob, $path) = split(/\s+/, $line);;
my $raw = `git cat-file blob $blob`;
- my $simple = Email::Simple->new($raw);
- my $mid = $simple->header("message-id");
+ my $mime = Email::MIME->new($raw);
+ my $mid = $mime->header("message-id");
my $path_sha1 = $path;
$path_sha1 =~ tr!/!!d;
$mid =~ tr/<>//d;
@@ -100,7 +100,7 @@ my @want = grep(m!/\Q$want\E!, @curr);
is(1, scalar @want, "wanted message is unique");
my $blob = (split(/\s+/, $want[0]))[2];
my $s = `git cat-file blob $blob`;
-$s = Email::Simple->new($s);
+$s = Email::MIME->new($s);
is("<666\@example.com>", $s->header("message-id"), "MID matches");
is($body_3, $s->body, "body matches");
diff --git a/t/mda-missing-mid.t b/t/mda-missing-mid.t
index 815616f..5d25d79 100644
--- a/t/mda-missing-mid.t
+++ b/t/mda-missing-mid.t
@@ -6,20 +6,20 @@ use warnings;
use Test::More;
use Ssoma::MDA;
use Ssoma::Git;
-use Email::Simple;
+use Email::MIME;
use File::Temp qw/tempdir/;
my $tmpdir = tempdir('ssoma-mda-missing-mid-XXXXXX', CLEANUP => 1);
my $git = Ssoma::Git->new("$tmpdir/gittest");
$git->init_db('-q');
my $mda = Ssoma::MDA->new($git);
-my $email = Email::Simple->new("From: U <u\@example.com>\n\nHIHI\n");
+my $email = Email::MIME->new("From: U <u\@example.com>\n\nHIHI\n");
$mda->deliver($email);
local $ENV{GIT_DIR} = "$tmpdir/gittest";
my @tree = `git ls-tree -r HEAD`;
is(scalar @tree, 1, "one item in tree");
my @line = split(/\s+/, $tree[0]);
-my $msg = Email::Simple->new($git->cat_blob($line[2]));
+my $msg = Email::MIME->new($git->cat_blob($line[2]));
like($msg->header("message-id"), qr/\A<[a-f0-9]{40}\@localhost>\z/,
"message-id generated for message missing it");
diff --git a/t/remover.t b/t/remover.t
index 4291013..d47081a 100644
--- a/t/remover.t
+++ b/t/remover.t
@@ -7,7 +7,7 @@ use Test::More;
use Ssoma::MDA;
use Ssoma::Git;
use Ssoma::Remover;
-use Email::Simple;
+use Email::MIME;
use Digest::SHA qw/sha1_hex/;
use File::Temp qw/tempdir/;
@@ -20,7 +20,7 @@ my $rm = Ssoma::Remover->new($git);
my @tree;
{
- my $email = Email::Simple->new(<<'EOF');
+ my $email = Email::MIME->new(<<'EOF');
From: me@example.com
To: u@example.com
Message-ID: <666@example.com>
@@ -34,8 +34,8 @@ EOF
is($?, 0, "no error from git ls-tree");
is(scalar @tree, 1, "message delivered");
- # simple removal
- $rm->remove_simple($email);
+ # mime removal
+ $rm->remove_mime($email);
@tree = `GIT_DIR=$git_dir git ls-tree -r HEAD`;
is($?, 0, "no error from git ls-tree");
is(scalar @tree, 0, "tree is now empty after removal");
@@ -49,7 +49,7 @@ EOF
is(scalar @tree, 2, "both messages stored");
# remove only one (the concflicting one)
- $rm->remove_simple($email);
+ $rm->remove_mime($email);
@tree = `GIT_DIR=$git_dir git ls-tree -r HEAD`;
is($?, 0, "no error from git ls-tree");
is(scalar @tree, 1, "one removed, one exists");
@@ -59,7 +59,7 @@ EOF
my $cur = `GIT_DIR=$git_dir git cat-file blob $line[2]`;
like($cur, qr/OMFG/, "kept original");
$email->body_set("OMFG\n");
- $rm->remove_simple($email);
+ $rm->remove_mime($email);
@tree = `GIT_DIR=$git_dir git ls-tree -r HEAD`;
is($?, 0, "no error from git ls-tree");
is(scalar @tree, 0, "last removed");
@@ -76,7 +76,7 @@ EOF
my $expect = 3;
foreach my $i (@seq) {
$email->body_set("$i\n");
- $rm->remove_simple($email);
+ $rm->remove_mime($email);
@tree = `GIT_DIR=$git_dir git ls-tree -r HEAD`;
is($?, 0, "no error from git ls-tree");
$expect--;
@@ -86,7 +86,7 @@ EOF
{
local $ENV{GIT_DIR} = $git_dir;
my $before = `git rev-parse HEAD^0`;
- $rm->remove_simple($email);
+ $rm->remove_mime($email);
my $after = `git rev-parse HEAD^0`;
is($before, $after, 'no commit on no-op removal');
}
@@ -96,7 +96,7 @@ EOF
$mda->deliver($email);
my $before = `git rev-parse HEAD^0`;
$email->body_set('changed');
- $rm->remove_simple($email);
+ $rm->remove_mime($email);
my $after = `git rev-parse HEAD^0`;
is($before, $after, 'no commit on no-op removal miss');
}
--
EW
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2016-03-03 3:23 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-03-03 3:23 [PATCH] use Email::MIME::Header::header_raw to read Message-ID Eric Wong
Code repositories for project(s) associated with this public inbox
https://80x24.org/public-inbox.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).