about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--lib/PublicInbox/LeiLcat.pm12
-rw-r--r--t/lei-import-imap.t3
2 files changed, 14 insertions, 1 deletions
diff --git a/lib/PublicInbox/LeiLcat.pm b/lib/PublicInbox/LeiLcat.pm
index 81ab1e36..5bd20c1f 100644
--- a/lib/PublicInbox/LeiLcat.pm
+++ b/lib/PublicInbox/LeiLcat.pm
@@ -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;
+                        }
+                }
         }
 }
 
diff --git a/t/lei-import-imap.t b/t/lei-import-imap.t
index 895b19ff..34fd6cf9 100644
--- a/t/lei-import-imap.t
+++ b/t/lei-import-imap.t
@@ -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;