From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 1C0181F5AE; Tue, 16 Jun 2020 07:05:07 +0000 (UTC) Date: Tue, 16 Jun 2020 07:05:06 +0000 From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 4/2] imap: *SEARCH: reinstate "TEXT" search-key Message-ID: <20200616070506.GB24682@dcvr> References: <20200616050540.13357-1-e@yhbt.net> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20200616050540.13357-1-e@yhbt.net> List-Id: I accidentally dropped "TEXT" handling while porting the IMAP search query parser to Parse::RecDescent. This reinstates it and adds a test to prevent future regression, and the additional test fixes a counting error for non-Xapian-enabled systems. --- lib/PublicInbox/IMAPsearchqp.pm | 3 ++- t/imapd.t | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/PublicInbox/IMAPsearchqp.pm b/lib/PublicInbox/IMAPsearchqp.pm index c9b442cb4fa..4ea99ea500b 100644 --- a/lib/PublicInbox/IMAPsearchqp.pm +++ b/lib/PublicInbox/IMAPsearchqp.pm @@ -16,7 +16,6 @@ my %MM = map {; $MoY[$_-1] => sprintf('%02u', $_) } (1..12); # IMAP to Xapian header search key mapping my %IH2X = ( - TEXT => '', SUBJECT => 's:', BODY => 'b:', FROM => 'f:', @@ -183,6 +182,7 @@ search_key1 : "ALL" | "RECENT" | "UNSEEN" | "NEW" | CC_string | BCC_string | SUBJECT_string + | TEXT_string | UID_set | MSN_set | sub_query @@ -239,6 +239,7 @@ TO_string : "TO" string { $q->ih2x('TO', $item{string}) } CC_string : "CC" string { $q->ih2x('CC', $item{string}) } BCC_string : "BCC" string { $q->ih2x('BCC', $item{string}) } SUBJECT_string : "SUBJECT" string { $q->ih2x('SUBJECT', $item{string}) } +TEXT_string : "TEXT" string { $q->ih2x(undef, $item{string}) } op_subq_enter : '(' { $q->subq_enter } sub_query : op_subq_enter search_key1(s) ')' { $q->subq_leave } diff --git a/t/imapd.t b/t/imapd.t index 4e2c8931870..f9d93448fe5 100644 --- a/t/imapd.t +++ b/t/imapd.t @@ -398,6 +398,8 @@ SKIP: { is(scalar(@$x), 1, 'MSN SEARCH on Subject works after rm'); $x = $mic->message_string($x->[0]); is($x, $ret->{2}->{RFC822}, 'message 2 unchanged'); + $x = $mic->search(qw(text embedded)); + is(scalar(@$x), 1, 'MSN SEARCH on TEXT works after rm'); } # FIXME? no EXPUNGE response, yet