use File::Spec;
our @EXPORT;
my $lei_loud = $ENV{TEST_LEI_ERR_LOUD};
+our ($lei_opt, $lei_out, $lei_err, $lei_cwdfh);
BEGIN {
@EXPORT = qw(tmpdir tcp_server tcp_connect require_git require_mods
run_script start_script key2sub xsys xsys_e xqx eml_load tick
local %SIG = %SIG;
local $0 = join(' ', @$cmd);
my $orig_io = _prepare_redirects($fhref);
- my $cwdfh;
+ my $cwdfh = $lei_cwdfh;
if (my $d = $opt->{'-C'}) {
- opendir $cwdfh, '.' or die "opendir .: $!";
+ unless ($cwdfh) {
+ opendir $cwdfh, '.' or die "opendir .: $!";
+ }
chdir $d or die "chdir $d: $!";
}
_run_sub($sub, $key, \@argv);
eval { PublicInbox::Inbox::cleanup_task() };
- die "chdir(restore): $!" if $cwdfh && !chdir($cwdfh);
+ die "fchdir(restore): $!" if $cwdfh && !chdir($cwdfh);
_undo_redirects($orig_io);
select STDOUT;
}
PublicInbox::Spawn::which($ENV{XAPIAN_COMPACT} || 'xapian-compact');
}
-our ($lei_opt, $lei_out, $lei_err);
# favor lei() or lei_ok() over $lei for new code
sub lei (@) {
my ($cmd, $env, $xopt) = @_;
SKIP: {
my ($cb) = pop @_;
my $test_opt = shift // {};
+ local $lei_cwdfh;
+ opendir $lei_cwdfh, '.' or xbail "opendir .: $!";
require_git(2.6, 1) or skip('git 2.6+ required for lei test', 2);
require_mods(qw(json DBD::SQLite Search::Xapian), 2);
require PublicInbox::Config;
($tmpdir, $for_destroy) = tmpdir unless $tmpdir;
state $persist_xrd = $ENV{TEST_LEI_DAEMON_PERSIST_DIR};
SKIP: {
- skip 'TEST_LEI_ONESHOT set', 1 if $ENV{TEST_LEI_ONESHOT};
+ $ENV{TEST_LEI_ONESHOT} and
+ xbail 'TEST_LEI_ONESHOT no longer supported';
my $home = "$tmpdir/lei-daemon";
mkdir($home, 0700) or BAIL_OUT "mkdir: $!";
local $ENV{HOME} = $home;
lei_ok(qw(daemon-kill), \"daemon-kill after $t");
}
}; # SKIP for lei_daemon
- unless ($test_opt->{daemon_only}) {
- $ENV{TEST_LEI_DAEMON_ONLY} and
- skip 'TEST_LEI_DAEMON_ONLY set', 1;
- require_ok 'PublicInbox::LEI';
- my $home = "$tmpdir/lei-oneshot";
- mkdir($home, 0700) or BAIL_OUT "mkdir: $!";
- local $ENV{HOME} = $home;
- local $ENV{XDG_RUNTIME_DIR} = '/dev/null';
- $cb->();
- }
if ($daemon_pid) {
for (0..10) {
kill(0, $daemon_pid) or last;
tick;
}
- ok(!kill(0, $daemon_pid), "$t daemon stopped after oneshot");
+ ok(!kill(0, $daemon_pid), "$t daemon stopped");
my $f = "$daemon_xrd/lei/errors.log";
open my $fh, '<', $f or BAIL_OUT "$f: $!";
my @l = <$fh>;