about summary refs log tree commit homepage
path: root/t/lei.t
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2021-01-27 03:42:27 -0600
committerEric Wong <e@80x24.org>2021-01-29 05:04:40 +0000
commitcf850cf6efac835445949b28ee0346f1dc34f8bd (patch)
tree7511ddf92b90e43135b9cfafef96497cc0f28a10 /t/lei.t
parent07225b371bb3258766e135d099588d603506f788 (diff)
downloadpublic-inbox-cf850cf6efac835445949b28ee0346f1dc34f8bd.tar.gz
And add tests for existing completion cases
Diffstat (limited to 't/lei.t')
-rw-r--r--t/lei.t46
1 files changed, 46 insertions, 0 deletions
diff --git a/t/lei.t b/t/lei.t
index 69338257..3f6702e6 100644
--- a/t/lei.t
+++ b/t/lei.t
@@ -216,6 +216,24 @@ my $test_external = sub {
         like($out, qr/boost=0\n/s, 'ls-external has output');
         ok($lei->(qw(add-external -q https://EXAMPLE.com/ibx)), 'add remote');
         is($err, '', 'no warnings after add-external');
+
+        ok($lei->(qw(_complete lei forget-external)), 'complete for externals');
+        my %comp = map { $_ => 1 } split(/\s+/, $out);
+        ok($comp{'https://example.com/ibx/'}, 'forget external completion');
+        $cfg->each_inbox(sub {
+                my ($ibx) = @_;
+                ok($comp{$ibx->{inboxdir}}, "local $ibx->{name} completion");
+        });
+        for my $u (qw(h http https https: https:/ https:// https://e
+                        https://example https://example. https://example.co
+                        https://example.com https://example.com/
+                        https://example.com/i https://example.com/ibx)) {
+                ok($lei->(qw(_complete lei forget-external), $u),
+                        "partial completion for URL $u");
+                is($out, "https://example.com/ibx/\n",
+                        "completed partial URL $u");
+        }
+
         $lei->('ls-external');
         like($out, qr!https://example\.com/ibx/!s, 'added canonical URL');
         is($err, '', 'no warnings on ls-external');
@@ -304,11 +322,39 @@ my $test_external = sub {
         }
 };
 
+my $test_completion = sub {
+        ok($lei->(qw(_complete lei)), 'no errors on complete');
+        my %out = map { $_ => 1 } split(/\s+/s, $out);
+        ok($out{'q'}, "`lei q' offered as completion");
+        ok($out{'add-external'}, "`lei add-external' offered as completion");
+
+        ok($lei->(qw(_complete lei q)), 'complete q (no args)');
+        %out = map { $_ => 1 } split(/\s+/s, $out);
+        for my $sw (qw(-f --format -o --output --mfolder --augment -a
+                        --mua --mua-cmd --no-local --local --verbose -v
+                        --save-as --no-remote --remote --torsocks
+                        --reverse -r )) {
+                ok($out{$sw}, "$sw offered as completion");
+        }
+
+        ok($lei->(qw(_complete lei q --form)), 'complete q --format');
+        is($out, "--format\n", 'complete lei q --format');
+        for my $sw (qw(-f --format)) {
+                ok($lei->(qw(_complete lei q), $sw), "complete q $sw ARG");
+                %out = map { $_ => 1 } split(/\s+/s, $out);
+                for my $f (qw(mboxrd mboxcl2 mboxcl mboxo json jsonl
+                                concatjson maildir)) {
+                        ok($out{$f}, "got $sw $f as output format");
+                }
+        }
+};
+
 my $test_lei_common = sub {
         $test_help->();
         $test_config->();
         $test_init->();
         $test_external->();
+        $test_completion->();
 };
 
 if ($ENV{TEST_LEI_ONESHOT}) {