I've made some progress getting this test to run (see working patch below)
but I still get one failure:
not ok 28 # POSIX::errno(): 20, $!: not a directory
20 is the correct value for ENOTDIR, but how can POSIX::errno() and $! be
expected to be numerically equal when $! returns a string? Or is it really
just checking to see if errno has not been set?
--- ext/POSIX/t/posix.t;-0 Sun Oct 14 23:00:35 2001
+++ ext/POSIX/t/posix.t Tue Nov 6 13:33:28 2001
@@ -20,10 +20,11 @@
$Is_W32 = $^O eq 'MSWin32';
$Is_NetWare = $^O eq 'NetWare';
$Is_Dos = $^O eq 'dos';
$Is_MPE = $^O eq 'mpeix';
$Is_MacOS = $^O eq 'MacOS';
+$Is_VMS = $^O eq 'VMS';
$testfd = open("TEST", O_RDONLY, 0) and print "ok 1\n";
read($testfd, $buffer, 9) if $testfd > 2;
print $buffer eq "#!./perl\n" ? "ok 2\n" : "not ok 2\n";
@@ -93,10 +94,12 @@
}
my $pat;
if ($Is_MacOS) {
$pat = qr/:t:$/;
+} elsif ($Is_VMS) {
+ $pat = qr/.t]$/i;
} else {
$pat = qr#[\\/]t$#i;
}
print getcwd() =~ $pat ? "ok 13\n" : "not ok 13\n";
@@ -164,17 +167,17 @@
# errno() looks at $! to generate its result.
# Autoloading should not munge the value.
my $foo = $!;
my $errno = POSIX::errno();
print "not " unless $errno == $foo;
- print "ok ", 28 + $test, "\n";
+ print "ok ", 28 + $test, " # POSIX::errno(): $errno, \$!: $!\n";
}
}
$| = 0;
# The following line assumes buffered output, which may be not true:
-print '@#!*$@(!@#$' unless ($Is_MacOS || $^O eq 'os2' ||
+print '@#!*$@(!@#$' unless ($Is_MacOS || $^O eq 'os2' || $Is_VMS ||
$^O eq 'uwin' || $^O eq 'os390' ||
(defined $ENV{PERLIO} &&
$ENV{PERLIO} eq 'unix' &&
$Config::Config{useperlio}));
_exit(0);