]> Sergey Matveev's repositories - public-inbox.git/commitdiff
lei lcat: allow IMAP folder URLs w/o UIDVALIDITY
authorEric Wong <e@80x24.org>
Sun, 30 May 2021 06:33:56 +0000 (06:33 +0000)
committerEric Wong <e@80x24.org>
Sun, 30 May 2021 08:09:08 +0000 (08:09 +0000)
Requiring UIDVALIDITY on the command-line is of course
unreasonable.

lib/PublicInbox/LeiLcat.pm
t/lei-import-imap.t

index 81ab1e368ca8756e1ef048d44c2ed4141d403f7d..5bd20c1fb09bdbdfca05f475150c0aeadc1fe9fe 100644 (file)
@@ -24,7 +24,17 @@ sub lcat_imap_uri ($$) {
        } elsif (defined(my $fid = $lms->fid_for($$uri))) {
                push @{$lei->{lcat_fid}}, $fid;
        } else {
-               $lei->child_error(1 << 8, "# unknown folder: $uri");
+               my $folders = [ $$uri ];
+               my $err = $lms->arg2folder($lei, $folders);
+               $lei->qerr(@{$err->{qerr}}) if $err && $err->{qerr};
+               if ($err && $err->{fail}) {
+                       $lei->child_error(1 << 8, "# unknown folder: $uri");
+               } else {
+                       for my $f (@$folders) {
+                               my $fid = $lms->fid_for($f);
+                               push @{$lei->{lcat_fid}}, $fid;
+                       }
+               }
        }
 }
 
index 895b19ffdd52f31155c17686fabf2ee1e9bdfd5b..34fd6cf999a714afda741ceb14d79f772dc430b7 100644 (file)
@@ -13,6 +13,7 @@ my $host_port = tcp_host_port($sock);
 undef $sock;
 test_lei({ tmpdir => $tmpdir }, sub {
        my $url = "imap://$host_port/t.v2.0";
+       my $url_orig = $url;
 
        lei_ok(qw(q z:1..));
        my $out = json_utf8->decode($lei_out);
@@ -100,6 +101,8 @@ test_lei({ tmpdir => $tmpdir }, sub {
        lei_ok qw(lcat -f json), $uid_url;
        $out = json_utf8->decode($lei_out);
        is(scalar(@$out), 2, 'got JSON') or diag explain($out);
+       lei_ok qw(lcat), $url_orig;
+       is($lei_out, $orig, 'lcat w/o UID works');
 });
 
 done_testing;