diff options
-rw-r--r-- | lib/PublicInbox/WwwListing.pm | 7 | ||||
-rw-r--r-- | t/extindex-psgi.t | 10 |
2 files changed, 14 insertions, 3 deletions
diff --git a/lib/PublicInbox/WwwListing.pm b/lib/PublicInbox/WwwListing.pm index eabda98a..1bb5fbd0 100644 --- a/lib/PublicInbox/WwwListing.pm +++ b/lib/PublicInbox/WwwListing.pm @@ -96,7 +96,8 @@ sub add_misc_ibx { # MiscSearch->retry_reopen callback delete $ctx->{-list}; # reset if retried my $pi_cfg = $ctx->{www}->{pi_cfg}; - if (defined(my $user_query = $q->{'q'})) { + my $user_query = $q->{'q'} // ''; + if ($user_query =~ /\S/) { $qs = "( $qs ) AND ( $user_query )"; } else { # special case for ALL $ctx->ibx_entry($pi_cfg->ALL // die('BUG: ->ALL expected'), {}); @@ -218,6 +219,10 @@ sub psgi_triple { $gzf->zmore('<pre>'); $gzf->zmore(join("\n", @$list)); $gzf->zmore(mset_footer($ctx, $mset)) if $mset; + } elsif (my $mset = delete $ctx->{-mset}) { + $gzf->zmore(mset_nav_top($ctx, $mset)); + $gzf->zmore('<pre>no matching inboxes'); + $gzf->zmore(mset_footer($ctx, $mset)); } else { $gzf->zmore('<pre>no inboxes, yet'); } diff --git a/t/extindex-psgi.t b/t/extindex-psgi.t index 31b04acd..4e26962e 100644 --- a/t/extindex-psgi.t +++ b/t/extindex-psgi.t @@ -59,8 +59,14 @@ my $client = sub { is($res->code, 200, 'all.mbox.gz'); $res = $cb->(GET('/')); - my $html = $res->content; - like($html, qr!\Qhttp://bogus.example.com/all\E!, 'html shows /all'); + like($res->content, qr!\Qhttp://bogus.example.com/all\E!, + '/all listed'); + $res = $cb->(GET('/?q=')); + is($res->code, 200, 'no query means all inboxes'); + $res = $cb->(GET('/?q=nonexistent')); + is($res->code, 404, 'no inboxes matched'); + unlike($res->content, qr!no inboxes, yet!, + 'we have inboxes, just no matches'); }; test_psgi(sub { $www->call(@_) }, $client); %$env = (%$env, TMPDIR => $tmpdir, PI_CONFIG => $pi_config); |