about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--lib/PublicInbox/WwwListing.pm7
-rw-r--r--t/extindex-psgi.t10
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);