# Copyright (C) 2013, Eric Wong and all contributors # License: AGPLv3 or later (https://www.gnu.org/licenses/agpl-3.0.txt) use strict; use warnings; use Test::More; use Email::MIME; use PublicInbox::View; # plain text { my $body = < keep this inline OK > Long and wordy reply goes here and it is split across multiple lines. > We generate links to a separate full page where quoted-text is inline. hello world EOF my $s = Email::Simple->create( header => [ From => 'a@example.com', To => 'b@example.com', 'Content-Type' => 'text/plain', 'Message-ID' => '', Subject => 'this is a subject', ], body => $body, ); $s = Email::MIME->new($s->as_string); my $html = PublicInbox::View->as_html($s); # ghetto like($html, qr/]+>> Long and wordy/, "long quoted text is anchored"); # short page my $pfx = "http://example.com/test/full"; my $short = PublicInbox::View->as_html($s, $pfx); like($short, qr/\n> keep this inline/, "short quoted text is inline"); like($short, qr/]+>Long and wordy/, "long quoted text is made into a link"); ok(length($short) < length($html), "short page is shorter"); } # multipart crap { my $parts = [ Email::MIME->create( attributes => { content_type => 'text/plain', }, body => 'hi', ), Email::MIME->create( attributes => { content_type => 'text/plain', }, body => 'bye', ) ]; my $mime = Email::MIME->create( header_str => [ From => 'a@example.com', Subject => 'blargh', 'Message-ID' => '', 'In-Reply-To' => '', ], parts => $parts, ); my $html = PublicInbox::View->as_html($mime); like($html, qr/hi\n-+ part #2 -+\nbye\n/, "multipart split"); } # multipart email with attached patch { my $parts = [ Email::MIME->create( attributes => { content_type => 'text/plain', }, body => 'hi, see attached patch', ), Email::MIME->create( attributes => { content_type => 'text/plain', filename => "foo.patch", }, body => "--- a/file\n+++ b/file\n" . "@@ -49, 7 +49,34 @@\n", ), ]; my $mime = Email::MIME->create( header_str => [ From => 'a@example.com', Subject => '[PATCH] asdf', 'Message-ID' => '', ], parts => $parts, ); my $html = PublicInbox::View->as_html($mime); like($html, qr!see attached patch\n-+ foo\.patch -+\n--- a/file\n!, "parts split with filename"); } done_testing();