like($lei_out, qr/use boolean prefix/, '--stdin on pipe');
}
ok(!lei(qw(q -q --stdin s:use)), "--stdin and argv don't mix");
+ like($lei_err, qr/no query allowed.*--stdin/,
+ '--stdin conflict error message');
for my $fmt (qw(ldjson ndjson jsonl)) {
lei_ok('q', '-f', $fmt, 's:use boolean prefix');
}
ok(!lei('q', '-o', "$home/mbox", 's:nope'),
'fails if mbox format unspecified');
+ like($lei_err, qr/unable to determine mbox/, 'mbox-related message');
+
ok(!lei(qw(q --no-local s:see)), '--no-local');
is($? >> 8, 1, 'proper exit code');
like($lei_err, qr/no local or remote.+? to search/, 'no inbox');
my $url = "http://$host_port/t2";
for my $p (qw(bogus@x/t.mbox.gz bogus@x/raw ?q=noresultever)) {
ok(!lei('import', "$url/$p"), "/$p fails properly");
+ like($lei_err, qr/curl.*404/, 'got curl 404');
}
for my $p (qw(/ /T/ /t/ /t.atom)) {
ok(!lei('import', "$url/m\@example$p"), "/$p fails");
ok(!lei(qw(import --mail-sync), "$url/x\@example.com/raw"),
'--mail-sync fails on HTTP');
+ like($lei_err, qr/--mail-sync/, 'error message notes --mail-sync');
});
done_testing;
$url = $u;
$u =~ s/;UIDVALIDITY=(\d+)\s*/;UIDVALIDITY=9$1/s;
ok(!lei('import', $u), 'UIDVALIDITY mismatch in URL rejected');
+ like($lei_err, qr/UIDVALIDITY mismatch/, 'mismatch noted');
lei_ok('inspect', $url);
my $inspect = json_utf8->decode($lei_out);
ok(!lei('add-external', $t2, '--mirror', "$http/t2/"),
'--mirror fails if reused') or diag "$lei_err.$lei_out = $?";
+ like($lei_err, qr/\Q$t2\E' already exists/, 'destination in error');
ok(!lei('add-external', "$home/t2\nnewline", '--mirror', "$http/t2/"),
'--mirror fails on newline');
unlike($lei_out, qr!\Qnewline\E!, 'newline entry not added');
ok(!lei('add-external', "$t2-fail", '-Lmedium'), '--mirror v2');
+ like($lei_err, qr/not a directory/, 'non-directory noted');
ok(!-d "$t2-fail", 'destination not created on failure');
lei_ok('ls-external');
unlike($lei_out, qr!\Q$t2-fail\E!, 'not added to ls-external');
my %phail = (
HTTPS => 'https://public-inbox.org/' . 'phail',
- ONION => 'http://7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/' . 'phail,'
+ ONION =>
+'http://7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/' .
+'phail,'
);
for my $t (qw(HTTPS ONION)) {
SKIP: {
is($? >> 8, 22, 'curl 404');
ok(!-d $dir, 'directory not created');
unlike($lei_err, qr/# mirrored/, 'no success message');
+ like($lei_err, qr/curl.*404/, "curl 404 shown for $k");
} # SKIP
} # for
});
test_lei(sub {
ok(!lei(qw(p2q this-better-cause-format-patch-to-fail)),
'p2q fails on bogus arg');
+ like($lei_err, qr/format-patch.*failed/, 'notes format-patch failure');
lei_ok(qw(p2q -w dfpost t/data/0001.patch));
is($lei_out, "dfpost:6e006fd73b1d\n", 'pathname') or diag $lei_err;
open my $fh, '+<', 't/data/0001.patch' or xbail "open: $!";
my $cat = popen_rd(['cat', $o]);
ok(!lei(qw(q --import-before bogus -o), "mboxrd:$o"),
'--import-before fails on non-seekable output');
+ like($lei_err, qr/not seekable/, 'unseekable noted in error');
is(do { local $/; <$cat> }, '', 'no output on FIFO');
close $cat;
$cat = popen_rd(['cat', $o]);
ok(-f $o && -s _, '--lock=none respected') or diag $lei_err;
unlink $o or xbail("unlink $o $! cwd=".Cwd::getcwd());
ok(!lei(@cmd, '--lock=dotlock,timeout=0.000001'), 'dotlock fails');
+ like($lei_err, qr/dotlock timeout/, 'timeout noted');
ok(-f $o && !-s _, 'nothing output on lock failure');
unlink "$o.lock" or BAIL_OUT $!;
lei_ok(@cmd, '--lock=dotlock,timeout=0.000001',
ok(-s "$home/mbcl2" > $size, 'size increased after up');
ok(!lei(qw(up -q), $home), 'up fails w/o --save');
+ like($lei_err, qr/--save was not used/, 'error noted --save');
lei_ok qw(ls-search); my @d = split(/\n/, $lei_out);
lei_ok qw(ls-search -z); my @z = split(/\0/, $lei_out);
lei_ok(qw(up --all=local));
ok(!lei(qw(forget-search), "$home/bogus"), 'bogus forget');
+ like($lei_err, qr/--save was not used/, 'error noted --save');
+
lei_ok qw(_complete lei forget-search);
like($lei_out, qr/mbrd-aug/, 'forget-search completion');
lei_ok(qw(forget-search -v), "$home/mbrd-aug");
unlike($lei_out, qr/mbrd-aug/,
'forget-search completion cleared after forget');
ok(!lei('up', "$home/mbrd-aug"), 'lei up fails after forget');
+ like($lei_err, qr/--save was not used/, 'error noted --save');
# dedupe=mid
my $o = "$home/dd-mid";
lei_ok(qw(ls-label)); is($lei_out, "urgent\n", 'label found');
ok(!lei(qw(tag -F eml t/utf8.eml +kw:seeen)), 'bad kw rejected');
like($lei_err, qr/`seeen' is not one of/, 'got helpful error');
+
ok(!lei(qw(tag -F eml t/utf8.eml +k:seen)), 'bad prefix rejected');
+ like($lei_err, qr/Unable to handle.*\Q+k:seen\E/, 'bad prefix noted');
+
ok(!lei(qw(tag -F eml t/utf8.eml)), 'no keywords');
+ like($lei_err, qr/no keywords or labels specified/,
+ 'lack of kw/L noted');
+
my $mb = "$ENV{HOME}/mb";
my $md = "$ENV{HOME}/md";
lei_ok(qw(q m:testmessage@example.com -o), "mboxrd:$mb");
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); diag $lei_err;
+ 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)]);
lei_ok(qw(ls-label));
is($lei_out, $patch2->as_string, 'blob matches');
ok(!lei('blob', '--mail', '69df7d5', '-I', $ibx->{inboxdir}),
"--mail won't run solver");
+ like($lei_err, qr/\b69df7d5\b/, 'OID in error by git(1)');
lei_ok('blob', '69df7d5', '-I', $ibx->{inboxdir});
is(git_sha(1, \$lei_out)->hexdigest, $expect, 'blob contents output');
is($lei_out, $prev, '--no-mail works');
ok(!lei(qw(blob -I), $ibx->{inboxdir}, $non_existent),
'non-existent blob fails');
+ my $abbrev = substr($non_existent, 0, 7);
+ like($lei_err, qr/could not find $abbrev/, 'failed abbreviation noted');
SKIP: {
skip '/.git exists', 1 if -e '/.git';
lei_ok(qw(-C / blob 69df7d5 -I), $ibx->{inboxdir},
ok(!lei(qw(-C / blob --no-cwd 69df7d5 -I), $ibx->{inboxdir}),
'--no-cwd works');
+ like($lei_err, qr/no --git-dir to try/,
+ 'lack of --git-dir noted');
ok(!lei(qw(-C / blob -I), $ibx->{inboxdir}, $non_existent),
'non-existent blob fails');
+ like($lei_err, qr/no --git-dir to try/,
+ 'lack of --git-dir noted');
}
# fallbacks