I have not tested this or anything on 5.8.7, I am in the process of
moving my changes over to 5.8.7.
chdir.t
This is just something I found while testing, chdir.t needs to clean up
it's changes to SYS$LOGIN so it does not mess up the VMS session when it
is run outside of the Perl test harness.
defins.t
It is now a bit more complicated to be sure that you expect the CRTL to
return a VMS filename.
lex_assign.t
Another one of the MCR cases that I missed on my previous e-mail.
Probably a better fix is to just remove the VMS specific MCR handling,
as Perl already knows how to handle either a UNIX or VMS file specification.
stat.t
First fix is that Perl is able to find the UNIX utilities in GNV,
especially if the CRTL is in a UNIX or POSIX mode. Unfortunately this
test tries to run "ls" as a DCL command. Since LSE or the Language
Sensitive Editor was installed on my test system, it got run instead.
The second thing is that I just noticed that the st_nlinks test is
disabled on VMS. That should be following the appropriate LINK support.
But since I do not know if that also requires use of the standard stat
structure that is provided with 8.2, so for now just marked it as a TO
DO item.
-John
[EMAIL PROTECTED]
Personal Opinion Only
--- t/op/chdir.t_5_8_6 Mon May 16 18:09:22 2005
+++ t/op/chdir.t Mon May 16 18:32:34 2005
@@ -114,6 +115,10 @@
# Restore the environment for VMS (and doesn't hurt for anyone else)
@[EMAIL PROTECTED] = @[EMAIL PROTECTED];
+
+ # On VMS this must be deleted or process table is wrong on exit
+ # when this script is run interactively.
+ delete $ENV{'SYS$LOGIN'} if $IsVMS;
}
--- t/op/defins.t_5_8_6 Mon May 16 18:56:16 2005
+++ t/op/defins.t Mon May 16 18:57:09 2005
@@ -11,7 +11,39 @@
print "1..14\n";
}
-$wanted_filename = $^O eq 'VMS' ? '0.' : '0';
+my $IsVMS = $^O eq 'VMS';
+my $unix_report;
+my $unix_only;
+my $vms_drop_dot;
+my $vms_format = 0;
+if ($IsVMS) {
+ $vms_format = 1;
+ $unix_report = $ENV{'DECC$FILENAME_UNIX_REPORT'};
+ if (defined $unix_report) {
+ if (($unix_report lt '1') && ($unix_report ne 'ENABLE')) {
+ $unix_report = undef;
+ }
+ }
+ $unix_only = $ENV{'DECC$FILENAME_UNIX_ONLY'};
+ if (defined $unix_only) {
+ if (($unix_only lt '1') && ($unix_only ne 'ENABLE')) {
+ $unix_only = undef;
+ }
+ }
+ $unix_report = 1 if (defined $unix_only);
+
+ $vms_drop_dot = $ENV{'DECC$READDIR_DROPDOTNOTYPE'};
+ if (defined $vms_drop_dot) {
+ if (($vms_drop_dot lt '1') && ($vms_drop_dot ne 'ENABLE')) {
+ $vms_drop_dot = undef;
+ }
+ }
+ if ((defined $unix_report) && (defined $vms_drop_dot)) {
+ $vms_format = 0
+ }
+}
+
+$wanted_filename = $vms_format ? '0.' : '0';
$saved_filename = $^O eq 'MacOS' ? ':0' : './0';
print "not " if $warns;
--- t/op/lex_assign.t_5_8_6 Mon May 16 19:08:38 2005
+++ t/op/lex_assign.t Mon May 16 19:09:25 2005
@@ -8,7 +8,12 @@
$| = 1;
umask 0;
$xref = \ "";
-$runme = ($^O eq 'VMS' ? 'MCR ' : '') . $^X;
+
+#VMS can pretend that it is UNIX.
+my $perl = $^X;
+$perl = VMS::Filespec::vmsify($perl) if $^O eq 'VMS';
+$runme = ($^O eq 'VMS' ? 'MCR ' : '') . $perl;
+
@a = (1..5);
%h = (1..6);
$aref = [EMAIL PROTECTED];
--- t/op/stat.t_5_8_7 Thu Jul 14 14:30:58 2005
+++ t/op/stat.t Thu Jul 14 14:59:44 2005
@@ -49,6 +49,8 @@
open(FOO, ">$tmpfile") || DIE("Can't open temp test file: $!");
my($nlink, $mtime, $ctime) = (stat(FOO))[$NLINK, $MTIME, $CTIME];
+
+#VMS Fix-me: nlink should work on VMS if applicable link support configured.
SKIP: {
skip "No link count", 1 if $Is_VMS;
@@ -216,6 +218,16 @@
unless -d '/dev' && -r '/dev' && -x '/dev';
skip "Skipping: unexpected ls output in MP-RAS", 6
if $Is_MPRAS;
+
+ # VMS problem: If GNV or other UNIX like tool is installed, then
+ # sometimes Perl will find /bin/ls, and will try to run it.
+ # But since Perl on VMS does not know to run it under Bash, it will
+ # try to run the DCL verb LS. And if the VMS product Language
+ # Sensitive Editor is installed, or some other LS verb, that will
+ # be run in stead. So do not do this until we can teach Perl
+ # when to use BASH on VMS.
+ skip "ls command not available to Perl in OpenVMS right now.", 6
+ if $Is_VMS;
my $LS = $Config{d_readlink} ? "ls -lL" : "ls -l";
my $CMD = "$LS /dev 2>/dev/null";