]> Sergey Matveev's repositories - public-inbox.git/blobdiff - t/lei.t
lei add-external: completion for existing URL basenames
[public-inbox.git] / t / lei.t
diff --git a/t/lei.t b/t/lei.t
index a46e46f24363f641591d81c5ffb4e3ae8e6adaea..03bbb078ed09e71548b3cbc1372f6c10b6fbca2e 100644 (file)
--- a/t/lei.t
+++ b/t/lei.t
@@ -14,6 +14,7 @@ require_mods(qw(json DBD::SQLite Search::Xapian));
 my $opt = { 1 => \(my $out = ''), 2 => \(my $err = '') };
 my ($home, $for_destroy) = tmpdir();
 my $err_filter;
+my $curl = which('curl');
 my @onions = qw(http://hjrcffqmbrq6wope.onion/meta/
        http://czquwvybam4bgbro.onion/meta/
        http://ou63pmih66umazou.onion/meta/);
@@ -39,7 +40,7 @@ local $ENV{XDG_RUNTIME_DIR} = "$home/xdg_run";
 local $ENV{HOME} = $home;
 local $ENV{FOO} = 'BAR';
 mkdir "$home/xdg_run", 0700 or BAIL_OUT "mkdir: $!";
-my $home_trash = [ "$home/.local", "$home/.config" ];
+my $home_trash = [ "$home/.local", "$home/.config", "$home/junk" ];
 my $cleanup = sub { rmtree([@$home_trash, @_]) };
 my $config_file = "$home/.config/lei/config";
 my $store_dir = "$home/.local/share/lei";
@@ -162,26 +163,19 @@ my $setup_publicinboxes = sub {
 my $test_external_remote = sub {
        my ($url, $k) = @_;
 SKIP: {
-       my $nr = 4;
+       my $nr = 5;
        skip "$k unset", $nr if !$url;
-       which('curl') or skip 'no curl', $nr;
+       $curl or skip 'no curl', $nr;
        which('torsocks') or skip 'no torsocks', $nr if $url =~ m!\.onion/!;
-       $lei->('ls-external');
-       for my $e (split(/^/ms, $out)) {
-               $e =~ s/\s+boost.*//s;
-               $lei->('forget-external', '-q', $e) or
-                       fail "error forgetting $e: $err"
-       }
-       $lei->('add-external', $url);
        my $mid = '20140421094015.GA8962@dcvr.yhbt.net';
-       ok($lei->('q', '-q', "m:$mid"), "query $url");
+       my @cmd = ('q', '--only', $url, '-q', "m:$mid");
+       ok($lei->(@cmd), "query $url");
        is($err, '', "no errors on $url");
        my $res = $json->decode($out);
        is($res->[0]->{'m'}, "<$mid>", "got expected mid from $url");
-       ok($lei->('q', '-q', "m:$mid", 'd:..20101002'), 'no results, no error');
+       ok($lei->(@cmd, 'd:..20101002'), 'no results, no error');
        is($err, '', 'no output on 404, matching local FS behavior');
        is($out, "[null]\n", 'got null results');
-       $lei->('forget-external', $url);
 } # /SKIP
 }; # /sub
 
@@ -232,7 +226,16 @@ my $test_external = sub {
                        "partial completion for URL $u");
                is($out, "https://example.com/ibx/\n",
                        "completed partial URL $u");
+               for my $qo (qw(-I --include --exclude --only)) {
+                       ok($lei->(qw(_complete lei q), $qo, $u),
+                               "partial completion for URL q $qo $u");
+                       is($out, "https://example.com/ibx/\n",
+                               "completed partial URL $u on q $qo");
+               }
        }
+       ok($lei->(qw(_complete lei add-external), 'https://'),
+               'add-external hostname completion');
+       is($out, "https://example.com/\n", 'completed up to hostname');
 
        $lei->('ls-external');
        like($out, qr!https://example\.com/ibx/!s, 'added canonical URL');
@@ -349,12 +352,21 @@ my $test_completion = sub {
        }
 };
 
+my $test_fail = sub {
+       $lei->(qw(q --only http://127.0.0.1:99999/bogus/ t:m));
+       is($? >> 8, 3, 'got curl exit for bogus URL');
+       $lei->(qw(q --only http://127.0.0.1:99999/bogus/ t:m -o), "$home/junk");
+       is($? >> 8, 3, 'got curl exit for bogus URL with Maildir');
+       is($out, '', 'no output');
+};
+
 my $test_lei_common = sub {
        $test_help->();
        $test_config->();
        $test_init->();
        $test_external->();
        $test_completion->();
+       $test_fail->();
 };
 
 if ($ENV{TEST_LEI_ONESHOT}) {