X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Flib%2Fio_unix.t;h=2f6def0af76e5b02c88d2b177a8e111131dcb05b;hb=569bd3158af2276a406770e3d68e76b7da59b730;hp=ccb274847fc7146bdb4a38cb22855c05dfcc3e55;hpb=93430cb427caeba01ba89b008008b46159a7c165;p=p5sagit%2Fp5-mst-13.2.git diff --git a/t/lib/io_unix.t b/t/lib/io_unix.t index ccb2748..2f6def0 100644 --- a/t/lib/io_unix.t +++ b/t/lib/io_unix.t @@ -3,7 +3,7 @@ BEGIN { unless(grep /blib/, @INC) { chdir 't' if -d 't'; - unshift @INC, '../lib' if -d '../lib'; + @INC = '../lib'; } } @@ -11,11 +11,29 @@ use Config; BEGIN { if(-d "lib" && -f "TEST") { - if ( ($Config{'extensions'} !~ /\bSocket\b/ || - $Config{'extensions'} !~ /\bIO\b/) && - !(($^O eq 'VMS') && $Config{d_socket})) { - print "1..0\n"; - exit 0; + my $reason; + if (! $Config{'d_fork'}) { + $reason = 'no fork'; + } + elsif ($Config{'extensions'} !~ /\bSocket\b/) { + $reason = 'Socket extension unavailable'; + } + elsif ($Config{'extensions'} !~ /\bIO\b/) { + $reason = 'IO extension unavailable'; + } + elsif ($^O eq 'os2') { + require IO::Socket; + + eval {IO::Socket::pack_sockaddr_un('/tmp/foo') || 1} + or $@ !~ /not implemented/ or + $reason = 'compiled without TCP/IP stack v4'; + } elsif ($^O eq 'qnx') { + $reason = 'Not implemented'; + } + undef $reason if $^O eq 'VMS' and $Config{d_socket}; + if ($reason) { + print "1..0 # Skip: $reason\n"; + exit 0; } } } @@ -23,12 +41,12 @@ BEGIN { $PATH = "/tmp/sock-$$"; # Test if we can create the file within the tmp directory -if (-e $PATH or not open(TEST, ">$PATH")) { - print "1..0\n"; +if (-e $PATH or not open(TEST, ">$PATH") and $^O ne 'os2') { + print "1..0 # Skip: cannot open '$PATH' for write\n"; exit 0; } close(TEST); -unlink($PATH) or die "Can't unlink $PATH: $!"; +unlink($PATH) or $^O eq 'os2' or die "Can't unlink $PATH: $!"; # Start testing $| = 1; @@ -51,7 +69,7 @@ if($pid = fork()) { $sock->close; waitpid($pid,0); - unlink($PATH) || warn "Can't unlink $PATH: $!"; + unlink($PATH) || $^O eq 'os2' || warn "Can't unlink $PATH: $!"; print "ok 5\n";