- ok(!-S $sock, 'sock gone');
- ok(!kill(0, $pid), 'pid gone after stop');
-
- ok(run_script([qw(lei daemon-pid)], undef, $opt), 'daemon-pid');
- chomp(my $new_pid = $out);
- ok(kill(0, $new_pid), 'new pid is running');
- ok(-S $sock, 'sock exists again');
- unlink $sock or BAIL_OUT "unlink $!";
- for (0..100) {
- kill('CHLD', $new_pid) or last;
- tick();
+ is($lei_out, '', 'nothing in stdout on init failure');
+};
+
+my $test_config = sub {
+ $cleanup->();
+ lei_ok(qw(config a.b c), \'config set var');
+ is($lei_out.$lei_err, '', 'no output on var set');
+ lei_ok(qw(config -l), \'config -l');
+ is($lei_err, '', 'no errors on listing');
+ is($lei_out, "a.b=c\n", 'got expected output');
+ ok(!lei(qw(config -f), "$home/.config/f", qw(x.y z)),
+ 'config set var with -f fails');
+ like($lei_err, qr/not supported/, 'not supported noted');
+ ok(!-f "$home/config/f", 'no file created');
+
+ lei_ok(qw(-c imap.debug config --bool imap.debug));
+ is($lei_out, "true\n", "-c sets w/o value");
+ lei_ok(qw(-c imap.debug=1 config --bool imap.debug));
+ is($lei_out, "true\n", "-c coerces value");
+ lei_ok(qw(-c imap.debug=tr00 config imap.debug));
+ is($lei_out, "tr00\n", "-c string value passed as-is");
+ lei_ok(qw(-c imap.debug=a -c imap.debug=b config --get-all imap.debug));
+ is($lei_out, "a\nb\n", '-c and --get-all work together');
+
+ lei_ok([qw(config -e)], { VISUAL => 'cat', EDITOR => 'cat' });
+ is($lei_out, "[a]\n\tb = c\n", '--edit works');
+};
+
+my $test_completion = sub {
+ lei_ok(qw(_complete lei), \'no errors on complete');
+ my %out = map { $_ => 1 } split(/\s+/s, $lei_out);
+ ok($out{'q'}, "`lei q' offered as completion");
+ ok($out{'add-external'}, "`lei add-external' offered as completion");
+
+ lei_ok(qw(_complete lei q), \'complete q (no args)');
+ %out = map { $_ => 1 } split(/\s+/s, $lei_out);
+ for my $sw (qw(-f --format -o --output --mfolder --augment -a
+ --mua --no-local --local --verbose -v
+ --save --no-save --no-remote --remote --torsocks
+ --reverse -r )) {
+ ok($out{$sw}, "$sw offered as `lei q' completion");
+ }
+
+ lei_ok(qw(_complete lei q --form), \'complete q --format');
+ is($lei_out, "--format\n", 'complete lei q --format');
+ for my $sw (qw(-f --format)) {
+ lei_ok(qw(_complete lei q), $sw);
+ %out = map { $_ => 1 } split(/\s+/s, $lei_out);
+ for my $f (qw(mboxrd mboxcl2 mboxcl mboxo json jsonl
+ concatjson maildir)) {
+ ok($out{$f}, "got $sw $f as output format");
+ }
+ }
+ lei_ok(qw(_complete lei import));
+ %out = map { $_ => 1 } split(/\s+/s, $lei_out);
+ for my $sw (qw(--no-kw --kw)) {
+ ok($out{$sw}, "$sw offered as `lei import' completion");