about summary refs log tree commit homepage
path: root/xt
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2021-02-02 11:46:55 +0000
committerEric Wong <e@80x24.org>2021-02-03 07:32:39 +0000
commit37e2fd40b9d3c37b202a693f6929411bd1064eae (patch)
treee0b4c24c9a70d3057c0bd1958495c114a34d812f /xt
parent82ec2366a5ba031267604925a70f4f3a29372d61 (diff)
downloadpublic-inbox-37e2fd40b9d3c37b202a693f6929411bd1064eae.tar.gz
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.
Diffstat (limited to 'xt')
-rw-r--r--xt/lei-sigpipe.t27
1 files changed, 25 insertions, 2 deletions
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;