X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=t%2F02-sigusr.t;h=112f5e6b11464945b929c3df5ee7bd733668b7f2;hb=5231a0009f35e98b287dc9633b67bb1de52a23ab;hp=0adb3c681f9622de00a6f8b3545651e0abe64b9f;hpb=762a8a02ffc76d62c023619d0dffe451498ae2b0;p=perl%2Fmodules%2FIPC-MorseSignals.git diff --git a/t/02-sigusr.t b/t/02-sigusr.t index 0adb3c6..112f5e6 100644 --- a/t/02-sigusr.t +++ b/t/02-sigusr.t @@ -2,34 +2,15 @@ use Test::More tests => 2; -use POSIX qw/SIGTERM SIGKILL EXIT_FAILURE EXIT_SUCCESS/; +use POSIX qw/SIGINT SIGTERM SIGKILL EXIT_SUCCESS EXIT_FAILURE WIFEXITED WEXITSTATUS/; -sub trysig { - my ($n, $s) = @_; - my $pid = fork; - if (!defined $pid) { - die "$s: fork() failed : $!"; - } elsif ($pid == 0) { - local $SIG{$s} = sub { exit EXIT_SUCCESS }; - 1 while 1; - } - my $ret = EXIT_FAILURE; - eval { - local $SIG{ALRM} = sub { die }; - alarm 1; - kill $n, $pid; - waitpid $pid, 0; - $ret = $?; - alarm 0; - }; - if ($@) { - kill SIGINT, $pid; - kill SIGTERM, $pid; - kill SIGKILL, $pid; - die "$s: $@"; - } - ok($ret == EXIT_SUCCESS, $s); -} +my ($a, $b) = (0, 0); -trysig SIGUSR1, 'USR1'; -trysig SIGUSR2, 'USR2'; +local $SIG{'USR1'} = sub { ++$a }; +local $SIG{'USR2'} = sub { ++$b }; + +kill SIGUSR1 => $$; +ok(($a == 1) && ($b == 0), 'SIGUSR1'); + +kill SIGUSR2 => $$; +ok(($a == 1) && ($b == 1), 'SIGUSR2');