]> Sergey Matveev's repositories - public-inbox.git/commitdiff
lei_input: disallow uppercase characters for labels
authorEric Wong <e@80x24.org>
Sun, 31 Oct 2021 09:26:58 +0000 (09:26 +0000)
committerEric Wong <e@80x24.org>
Sun, 31 Oct 2021 17:37:31 +0000 (17:37 +0000)
Xapian boolean terms rely on upper-case prefixes, so the terms
themselves need to be all lowercase.

lib/PublicInbox/LeiInput.pm
t/lei-tag.t

index 84fc579dc4803b48624b2e445db8efddbf9a1c37..a1dcc907252f47d7716a83e799e2912a34be2416 100644 (file)
@@ -30,7 +30,7 @@ my %ERR = (
                my ($label) = @_;
                length($label) >= $L_MAX and
                        return "`$label' too long (must be <= $L_MAX)";
-               $label =~ m{\A[a-z0-9_](?:[a-z0-9_\-\./\@,]*[a-z0-9])?\z}i ?
+               $label =~ m{\A[a-z0-9_](?:[a-z0-9_\-\./\@,]*[a-z0-9])?\z} ?
                        undef : "`$label' is invalid";
        },
        kw => sub {
index 44e4659fc2262db3b76420c85eae9d3f3210d28f..5941cd0f3da7f91f7550a03a2bf45d72cdf8ee47 100644 (file)
@@ -84,11 +84,19 @@ test_lei(sub {
        lei_ok(qw(ls-label));
        is($lei_out, "nope\nqp\nurgent\n", 'ls-label shows qp');
 
-       lei_ok qw(tag -F eml t/utf8.eml +L:INBOX +L:x);
+       lei_ok qw(tag -F eml t/utf8.eml +L:inbox +L:x);
        lei_ok qw(q m:testmessage@example.com);
-       $check_kw->([qw(answered seen)], L => [qw(INBOX nope urgent x)]);
+       $check_kw->([qw(answered seen)], L => [qw(inbox nope urgent x)]);
        lei_ok(qw(ls-label));
-       is($lei_out, "INBOX\nnope\nqp\nurgent\nx\n", 'ls-label shows qp');
+       is($lei_out, "inbox\nnope\nqp\nurgent\nx\n", 'ls-label shows qp');
+
+       lei_ok qw(q L:inbox);
+       is(json_utf8->decode($lei_out)->[0]->{blob},
+               $r2->[0]->{blob}, 'label search works');
+
+       ok(!lei(qw(tag -F eml t/utf8.eml +L:ALLCAPS)), '+L:ALLCAPS fails');
+       lei_ok(qw(ls-label));
+       is($lei_out, "inbox\nnope\nqp\nurgent\nx\n", 'ls-label unchanged');
 
        if (0) { # TODO label+kw search w/ externals
                lei_ok(qw(q L:qp), "mid:$mid", '--only', "$ro_home/t2");