1#!/usr/bin/perl -w 2use strict; 3use Test::More; 4use autodie; 5 6use constant SYSINIT => 1; 7 8if ($^O eq 'MSWin32') { 9 plan skip_all => "Can't send signals to own process on recent versions of Windows."; 10} 11 12if (not CORE::kill(0,$$)) { 13 plan skip_all => "Can't send signals to own process on this system."; 14} 15 16if (CORE::kill(0, SYSINIT)) { 17 plan skip_all => "Can unexpectedly signal process 1. Won't run as root."; 18} 19 20$SIG{HUP} = sub { }; # Ignore SIGHUP 21 22plan tests => 6; 23 24eval { my $rv = kill(0, $$); }; 25is($@, '', "Signalling self is fine"); 26 27eval { kill('HUP', $$); }; 28is($@, '', "Kill with non-zero signal, in void context is ok"); 29 30eval { kill(0, SYSINIT) }; 31isa_ok($@, 'autodie::exception', "kill 0 should die if called in void context"); 32 33eval { my $rv = kill(0, SYSINIT) }; 34is($@, '', "kill 0 should never die if called in scalar context"); 35 36eval { my $rv = kill('HUP', $$, SYSINIT) }; 37isa_ok($@, 'autodie::exception', 'kill exception on single failure.'); 38is($@->return, 1, "kill fails correctly on a 'true' failure."); 39