summaryrefslogtreecommitdiff
path: root/lib/AutoSplit.t
diff options
context:
space:
mode:
authorCraig A. Berry <craigberry@mac.com>2001-10-08 10:40:43 -0500
committerJarkko Hietaniemi <jhi@iki.fi>2001-10-08 20:41:50 +0000
commit64a3d80f001e333a9280dbb6ecc790d2991874df (patch)
tree1c05a44dbbf9cc603e0e2c2522665c20e17a9612 /lib/AutoSplit.t
parentf29f446bc2ad9f83053ad691d140520a7eb3c59a (diff)
downloadperl-64a3d80f001e333a9280dbb6ecc790d2991874df.tar.gz
Autosplit patch for VMS
Message-Id: <5.1.0.14.0.20011008150808.02302618@exchi01> p4raw-id: //depot/perl@12365
Diffstat (limited to 'lib/AutoSplit.t')
-rw-r--r--lib/AutoSplit.t30
1 files changed, 29 insertions, 1 deletions
diff --git a/lib/AutoSplit.t b/lib/AutoSplit.t
index 296e359ded..7723a536d2 100644
--- a/lib/AutoSplit.t
+++ b/lib/AutoSplit.t
@@ -65,14 +65,29 @@ sub split_a_file {
return $output;
}
+# Brackets are valid in VMS filespecs and this test puts filespecs
+# into regexes a lot.
+
+sub _escape_brackets {
+ my $str = shift;
+ $str =~ s/\[/\\\[/g;
+ $str =~ s/\]/\\\]/g;
+ return $str;
+}
+
my $i = 0;
-my $dir = File::Spec->catfile($incdir, 'auto');
+my $dir = File::Spec->catdir($incdir, 'auto');
+if ($^O eq 'VMS') {
+ $dir = VMS::Filespec::unixify($dir);
+ $dir =~ s/\/$//;
+}
foreach (@tests) {
my $module = 'A' . $i . '_' . $$ . 'splittest';
my $file = File::Spec->catfile($incdir,"$module.pm");
s/\*INC\*/$incdir/gm;
s/\*DIR\*/$dir/gm;
s/\*MOD\*/$module/gm;
+ s#//#/#gm;
# Build a hash for this test.
my %args = /^\#\#\ ([^\n]*)\n # Key is on a line starting ##
((?:[^\#]+ # Any number of characters not #
@@ -92,6 +107,17 @@ foreach (@tests) {
$output = split_a_file (undef, $file, $dir, @extra_args);
}
+ if ($^O eq 'VMS') {
+ my ($filespec, $replacement);
+ while ($output =~ m/(\[.+\])/) {
+ $filespec = $1;
+ $replacement = VMS::Filespec::unixify($filespec);
+ $filespec = _escape_brackets($filespec);
+ $replacement =~ s/\/$//;
+ $output =~ s/$filespec/$replacement/;
+ }
+ }
+
# test n+1
is ($output, $args{Get}, "Output from autosplit()ing $args{Name}");
@@ -101,6 +127,7 @@ foreach (@tests) {
find (sub {$got{$File::Find::name}++ unless -d $_}, $dir);
foreach (split /\n/, $args{Files}) {
next if /^#/;
+ $_ = lc($_) if $^O eq 'VMS';
unless (delete $got{$_}) {
$missing{$_}++;
}
@@ -143,6 +170,7 @@ foreach (@tests) {
if ($args{Tests}) {
foreach my $code (split /\n/, $args{Tests}) {
next if $code =~ /^\#/;
+ $code =~ s/\[(File::Spec->catfile\(.*\))\]/[_escape_brackets($1)]/ if $^O eq 'VMS';
defined eval $code or fail(), print "# Code: $code\n# Error: $@";
}
}