X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=t%2F02-sigusr.t;fp=t%2F02-sigusr.t;h=0adb3c681f9622de00a6f8b3545651e0abe64b9f;hb=762a8a02ffc76d62c023619d0dffe451498ae2b0;hp=0000000000000000000000000000000000000000;hpb=3cadc28babc49dbbb76ef7ff7344add68f59c3c2;p=perl%2Fmodules%2FIPC-MorseSignals.git diff --git a/t/02-sigusr.t b/t/02-sigusr.t new file mode 100644 index 0000000..0adb3c6 --- /dev/null +++ b/t/02-sigusr.t @@ -0,0 +1,35 @@ +#!perl -T + +use Test::More tests => 2; + +use POSIX qw/SIGTERM SIGKILL EXIT_FAILURE EXIT_SUCCESS/; + +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); +} + +trysig SIGUSR1, 'USR1'; +trysig SIGUSR2, 'USR2';