X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FIPC-MorseSignals.git;a=blobdiff_plain;f=t%2F02-sigusr.t;h=112f5e6b11464945b929c3df5ee7bd733668b7f2;hp=abe83760b0bab75ec411ebb69db8dc2935155e2f;hb=5231a0009f35e98b287dc9633b67bb1de52a23ab;hpb=fcfeb2180a98d41e14a848f7bb8ba0d05b297c52 diff --git a/t/02-sigusr.t b/t/02-sigusr.t index abe8376..112f5e6 100644 --- a/t/02-sigusr.t +++ b/t/02-sigusr.t @@ -4,34 +4,13 @@ use Test::More tests => 2; 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; - exit EXIT_FAILURE; - } - sleep 1; - my $ret = 0; - eval { - local $SIG{ALRM} = sub { die }; - alarm 1; - kill $n, $pid; - waitpid $pid, 0; - $ret = (WIFEXITED($?) && (WEXITSTATUS($?) == EXIT_SUCCESS)); - alarm 0; - }; - if ($@) { - kill SIGINT, $pid; - kill SIGTERM, $pid; - kill SIGKILL, $pid; - die "$s: $@"; - } - ok($ret, $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');