about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--lib/PublicInbox/MailDiff.pm2
-rw-r--r--t/lei-mail-diff.t1
-rw-r--r--t/psgi_v2.t1
3 files changed, 3 insertions, 1 deletions
diff --git a/lib/PublicInbox/MailDiff.pm b/lib/PublicInbox/MailDiff.pm
index 98284b23..89284e39 100644
--- a/lib/PublicInbox/MailDiff.pm
+++ b/lib/PublicInbox/MailDiff.pm
@@ -24,7 +24,7 @@ sub write_part { # Eml->each_part callback
         $s //= $part->body;
         $s =~ s/\r\n/\n/gs; # TODO: consider \r+\n to match View
         $s =~ s/\s*\z//s;
-        write_file '>:utf8', "$self->{curdir}/$idx.$sfx", $s;
+        write_file '>:utf8', "$self->{curdir}/$idx.$sfx", $s, "\n";
 }
 
 # public
diff --git a/t/lei-mail-diff.t b/t/lei-mail-diff.t
index 9398596a..1a896e51 100644
--- a/t/lei-mail-diff.t
+++ b/t/lei-mail-diff.t
@@ -7,6 +7,7 @@ test_lei(sub {
         ok(!lei('mail-diff', 't/data/0001.patch', 't/data/binary.patch'),
                 'different messages are different');
         like($lei_out, qr/^\+/m, 'diff shown');
+        unlike $lei_out, qr/No newline at end of file/;
         lei_ok('mail-diff', 't/data/0001.patch', 't/data/0001.patch');
         is($lei_out, '', 'no output if identical');
 });
diff --git a/t/psgi_v2.t b/t/psgi_v2.t
index 5ccaab19..54faae9b 100644
--- a/t/psgi_v2.t
+++ b/t/psgi_v2.t
@@ -287,6 +287,7 @@ my $client1 = sub {
                 'cr_mismatch is only diff context');
         like($raw, qr!>\-pipe !s, 'pipe diff del line');
         like($raw, qr!>\+pipe !s, 'pipe diff ins line');
+        unlike $raw, qr/No newline at end of file/;
 };
 
 test_psgi(sub { $www->call(@_) }, $client1);