]> git.sur5r.net Git - i3/i3/commitdiff
complete-run: add cleanup sighandler
authorMaik Fischer <maikf@qu.cx>
Sun, 27 Nov 2011 16:59:25 +0000 (17:59 +0100)
committerMaik Fischer <maikf@qu.cx>
Sun, 4 Dec 2011 13:14:20 +0000 (14:14 +0100)
testcases/complete-run.pl

index 0122710618b50192708b6b453f90e52b455a1aea..1cb6dab375d4487d29330ca43330b37042187142 100755 (executable)
@@ -55,7 +55,6 @@ my $help = 0;
 # num_cores * 2.
 my $parallel = undef;
 my @displays = ();
-my @childpids = ();
 
 my $result = GetOptions(
     "coverage-testing" => \$coverage_testing,
@@ -75,7 +74,8 @@ pod2usage(-verbose => 2, -exitcode => 0) if $help;
 if (@displays == 0) {
     my ($displays, $pids) = start_xdummy($parallel);
     @displays = @$displays;
-    @childpids = @$pids;
+
+    push our @CLEANUP, sub { kill(15, $_) for @$pids };
 }
 
 # connect to all displays for two reasons:
@@ -147,7 +147,7 @@ $harness->summary($aggregator);
 
 close $log;
 
-kill(15, $_) for @childpids;
+cleanup();
 
 exit 0;
 
@@ -222,6 +222,13 @@ sub take_job {
     }
 }
 
+sub cleanup {
+    $_->() for our @CLEANUP;
+}
+
+# must be in a begin block because we C<exit 0> above
+BEGIN { $SIG{$_} = \&cleanup for qw(INT TERM QUIT KILL) }
+
 __END__
 
 =head1 NAME