diff options
Diffstat (limited to 'src/test/perl/TestLib.pm')
-rw-r--r-- | src/test/perl/TestLib.pm | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/test/perl/TestLib.pm b/src/test/perl/TestLib.pm index 649fd821733..713a1214e71 100644 --- a/src/test/perl/TestLib.pm +++ b/src/test/perl/TestLib.pm @@ -11,6 +11,7 @@ use strict; use warnings; use Config; +use Cwd; use Exporter 'import'; use File::Basename; use File::Spec; @@ -145,6 +146,33 @@ sub tempdir_short return File::Temp::tempdir(CLEANUP => 1); } +# Translate a Perl file name to a host file name. Currently, this is a no-op +# except for the case of Perl=msys and host=mingw32. The subject need not +# exist, but its parent directory must exist. +sub perl2host +{ + my ($subject) = @_; + return $subject unless $Config{osname} eq 'msys'; + my $here = cwd; + my $leaf; + if (chdir $subject) + { + $leaf = ''; + } + else + { + $leaf = '/' . basename $subject; + my $parent = dirname $subject; + chdir $parent or die "could not chdir \"$parent\": $!"; + } + + # this odd way of calling 'pwd -W' is the only way that seems to work. + my $dir = qx{sh -c "pwd -W"}; + chomp $dir; + chdir $here; + return $dir . $leaf; +} + sub system_log { print("# Running: " . join(" ", @_) . "\n"); |