# Test to make sure object can be instantiated for icmp protocol. # Root access is required to actually perform icmp testing. use strict; use Config; BEGIN { unless (eval "require Socket") { print "1..0 \# Skip: no Socket\n"; exit; } unless ($Config{d_getpbyname}) { print "1..0 \# Skip: no getprotobyname\n"; exit; } } use Test::More tests => 2; BEGIN {use_ok('Net::Ping')}; SKIP: { skip "icmp ping requires root privileges.", 1 if ($> and $^O ne 'VMS' and $^O ne 'cygwin') or (($^O eq 'MSWin32' or $^O eq 'cygwin') and !IsAdminUser()) or ($^O eq 'VMS' and (`write sys\$output f\$privilege("SYSPRV")` =~ m/FALSE/)); my $p = new Net::Ping "icmp"; isa_ok($p, 'Net::Ping', 'object can be instantiated for icmp protocol'); } sub IsAdminUser { return unless $^O eq 'MSWin32' or $^O eq 'cygwin'; return unless eval { require Win32 }; return unless defined &Win32::IsAdminUser; return Win32::IsAdminUser(); }