I have this commit pushed to a smoke-me branch. It doesn't cause any test
failures on the HP VMS testdrive system. Am I making bad assumptions?
Specifically, is it filesystem dependant whether this code as-is will pass?
open(H,'run/fresh_perl.t'); # must be in the 't' directory
stat(H);
print "ok\n" if (-e _ and -f _ and -r _);
I infer that it must have failed 12 years ago, because the last line was
"corrected" to
print "ok\n" if (-e _ and -f _);
But what changed to cause it to work now?
Nicholas Clark
commit 219b23a016e4d19b9fc29d2cb6aad7c8f485e7bc
Author: Nicholas Clark <[email protected]>
Date: Wed Aug 7 11:57:09 2013 +0200
Remove the two "VMS adjustments" from test.pl's _fresh_perl
These were added by commit ed6b3797850720f7 ("make t/op/misc.t work on VMS")
in Jan 2001 back when the relevant code was in t/op/misc.t
The two adjustments each only applied to one test.
Was: system './perl -ne "print if eof" /dev/null'
Became: system './perl -ne "print if eof" NL:'
Was: print "ok\n" if (-e _ and -f _ and -r _);
Became: print "ok\n" if (-e _ and -f _);
The latter had the comment "VMS file locking".
It seems that neither is needed now. Perl will recognise "/dev/null" as
the null device, and -r returns true on a file opened for reading.
The "adjustments", particularly the second, should have been done all along
in the code for the test itself, not by complicating the test runner.
diff --git a/t/test.pl b/t/test.pl
index 89c1d4d..3662aa6 100644
--- a/t/test.pl
+++ b/t/test.pl
@@ -848,16 +848,6 @@ sub _fresh_perl {
$runperl_args->{stderr} = 1 unless exists $runperl_args->{stderr};
open TEST, ">$tmpfile" or die "Cannot open $tmpfile: $!";
-
- # VMS adjustments
- if( $is_vms ) {
- $prog =~ s#/dev/null#NL:#;
-
- # VMS file locking
- $prog =~ s{if \(-e _ and -f _ and -r _\)}
- {if (-e _ and -f _)}
- }
-
print TEST $prog;
close TEST or die "Cannot close $tmpfile: $!";