X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=t%2Fpsgi_search.t;h=4ff25eb2e9b6d0e617d1edf9e70b4816aabdf15b;hb=31cb75037a757c9388f74283a8b1ecb7c5b65f24;hp=0c4bdcd1d75c5558f7f15a303fd9cdd0bac0cb01;hpb=9bd675d33ad1e49bd2ebe12a1d216216e61380de;p=public-inbox.git diff --git a/t/psgi_search.t b/t/psgi_search.t index 0c4bdcd1..4ff25eb2 100644 --- a/t/psgi_search.t +++ b/t/psgi_search.t @@ -3,25 +3,21 @@ use strict; use warnings; use Test::More; -use File::Temp qw/tempdir/; use Email::MIME; use PublicInbox::Config; use PublicInbox::Inbox; use PublicInbox::InboxWritable; -use PublicInbox::WWW; use bytes (); # only for bytes::length +use PublicInbox::TestCommon; my @mods = qw(DBD::SQLite Search::Xapian HTTP::Request::Common Plack::Test URI::Escape Plack::Builder); -foreach my $mod (@mods) { - eval "require $mod"; - plan skip_all => "$mod missing for psgi_search.t" if $@; -} - -use_ok $_ foreach (@mods, qw(PublicInbox::SearchIdx)); -my $tmpdir = tempdir('pi-psgi-search.XXXXXX', TMPDIR => 1, CLEANUP => 1); +require_mods(@mods); +use_ok($_) for (qw(HTTP::Request::Common Plack::Test)); +use_ok 'PublicInbox::WWW'; +my ($tmpdir, $for_destroy) = tmpdir(); my $ibx = PublicInbox::Inbox->new({ - mainrepo => $tmpdir, + inboxdir => $tmpdir, address => 'git@vger.kernel.org', name => 'test', }); @@ -31,24 +27,40 @@ my $im = $ibx->importer(0); my $digits = '10010260936330'; my $ua = 'Pine.LNX.4.10'; my $mid = "$ua.$digits.2460-100000\@penguin.transmeta.com"; -my $data = <<"EOF"; +my $mime = PublicInbox::MIME->new(< From: Ævar Arnfjörð Bjarmason To: git\@vger.kernel.org EOF +$im->add($mime); -my $mime = Email::MIME->new(\$data); +$mime = PublicInbox::MIME->new(<<'EOF'); +Subject: +Message-ID: +From: blank subject +To: git@vger.kernel.org + +EOF $im->add($mime); + +$mime = PublicInbox::MIME->new(<<'EOF'); +Message-ID: +From: no subject at all +To: git@vger.kernel.org + +EOF +$im->add($mime); + $im->done; PublicInbox::SearchIdx->new($ibx, 1)->index_sync; my $cfgpfx = "publicinbox.test"; -my $config = PublicInbox::Config->new({ - "$cfgpfx.address" => 'git@vger.kernel.org', - "$cfgpfx.mainrepo" => $tmpdir, -}); +my $config = PublicInbox::Config->new(\<new($config); test_psgi(sub { $www->call(@_) }, sub { my ($cb) = @_; @@ -82,6 +94,25 @@ test_psgi(sub { $www->call(@_) }, sub { like($res->content, $mid_re, 'found mid in response'); chop($digits); } + + $res = $cb->(GET('/test/')); + $html = $res->content; + like($html, qr/\bhref="no-subject-at-all[^>]+>\(no subject\)]+>\(no subject\)(GET('/test/?q=tc:git')); + like($html, qr/\bhref="no-subject-at-all[^>]+>\(no subject\)]+>\(no subject\)(GET('/test/no-subject-at-all@example.com/raw')); + like($res->header('Content-Disposition'), + qr/filename=no-subject\.txt/); + $res = $cb->(GET('/test/no-subject-at-all@example.com/t.mbox.gz')); + like($res->header('Content-Disposition'), + qr/filename=no-subject\.mbox\.gz/); }); done_testing();