diff options
author | Eric Wong <e@80x24.org> | 2021-04-28 07:51:56 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2021-04-28 19:30:54 +0000 |
commit | 5e788baf14bd99cc7e428432479eae374343525a (patch) | |
tree | 8f783b751993a96b195c40480e36b14ef063dc58 /lib/PublicInbox/TestCommon.pm | |
parent | c8183449e73a94f02a63778bf4d1c70a3ec2a0df (diff) | |
download | public-inbox-5e788baf14bd99cc7e428432479eae374343525a.tar.gz |
This simplifies test_lei users in t/*.t
Diffstat (limited to 'lib/PublicInbox/TestCommon.pm')
-rw-r--r-- | lib/PublicInbox/TestCommon.pm | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/PublicInbox/TestCommon.pm b/lib/PublicInbox/TestCommon.pm index 09256852..460c9da0 100644 --- a/lib/PublicInbox/TestCommon.pm +++ b/lib/PublicInbox/TestCommon.pm @@ -12,6 +12,7 @@ use IO::Socket::INET; 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 @@ -306,14 +307,16 @@ sub run_script ($;$$) { 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; } @@ -469,7 +472,6 @@ sub have_xapian_compact () { 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) = @_; @@ -515,6 +517,8 @@ sub test_lei { 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; |