Make File::Glob more VMS-friendly (Charles Lane)
[p5sagit/p5-mst-13.2.git] / t / lib / io_pipe.t
index eee3741..bcb89a0 100755 (executable)
@@ -3,7 +3,7 @@
 BEGIN {
     unless(grep /blib/, @INC) {
        chdir 't' if -d 't';
-       @INC = '../lib' if -d '../lib';
+       unshift @INC, '../lib' if -d '../lib';
     }
 }
 
@@ -11,10 +11,16 @@ use Config;
 
 BEGIN {
     if(-d "lib" && -f "TEST") {
-        if (! $Config{'d_fork'} ||
-           ($Config{'extensions'} !~ /\bIO\b/ && $^O ne 'VMS'))
-       {
-           print "1..0\n";
+       my $reason;
+       if (! $Config{'d_fork'}) {
+           $reason = 'no fork';
+       }
+       elsif ($Config{'extensions'} !~ /\bIO\b/) {
+           $reason = 'IO extension unavailable';
+       }
+       undef $reason if $^O eq 'VMS';
+       if ($reason) {
+           print "1..0 # Skip: $reason\n";
            exit 0;
         }
     }
@@ -41,6 +47,13 @@ print $pipe "not ok 3\n" ;
 $pipe->close or print "# \$!=$!\nnot ";
 print "ok 4\n";
 
+# Check if can fork with dynamic extensions (bug in CRT):
+if ($^O eq 'os2' and
+    system "$^X -I../lib -MOpcode -e 'defined fork or die'  > /dev/null 2>&1") {
+    print "ok $_ # skipped: broken fork\n" for 5..10;
+    exit 0;
+}
+
 $pipe = new IO::Pipe;
 
 $pid = fork();
@@ -104,6 +117,7 @@ sub broken_pipe {
 print $pipe "not ok 9\n";
 $pipe->close;
 
+sleep 1;
 
 print "ok 10\n";