From 37e2fd40b9d3c37b202a693f6929411bd1064eae Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Tue, 2 Feb 2021 11:46:55 +0000 Subject: lei q: do not leave temporary files after oneshot exit Avoid on-stack shortcuts which may prevent destructors from firing since we're not inside the event loop. We'll also tidy up the unlink mechanism in LeiOverview while we're at it. --- xt/lei-sigpipe.t | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) (limited to 'xt') diff --git a/xt/lei-sigpipe.t b/xt/lei-sigpipe.t index 1aa9ed07..ba2d23c8 100644 --- a/xt/lei-sigpipe.t +++ b/xt/lei-sigpipe.t @@ -29,7 +29,30 @@ my $do_test = sub { } }; -$do_test->(); -$do_test->({XDG_RUNTIME_DIR => '/dev/null'}); +my ($tmp, $for_destroy) = tmpdir(); +my $pid; +my $opt = { run_mode => 0, 1 => \(my $out = '') }; +if (run_script([qw(lei daemon-pid)], undef, $opt)) { + chomp($pid = $out); + mkdir "$tmp/d" or BAIL_OUT $!; + local $ENV{TMPDIR} = "$tmp/d"; + $do_test->(); + $out = ''; + ok(run_script([qw(lei daemon-pid)], undef, $opt), 'daemon-pid again'); + chomp($out); + is($out, $pid, 'daemon-pid unchanged'); + ok(kill(0, $pid), 'daemon still running'); + $out = ''; +} +{ + mkdir "$tmp/1" or BAIL_OUT $!; + local $ENV{TMPDIR} = "$tmp/1"; + $do_test->({XDG_RUNTIME_DIR => '/dev/null'}); + is(unlink(glob("$tmp/1/*")), 0, 'nothing left over w/ oneshot'); +} + +# the one-shot test should be slow enough that the daemon has cleaned +# up in the background: +is_deeply([glob("$tmp/d/*")], [], 'nothing left over with daemon'); done_testing; -- cgit v1.2.3-24-ge0c7