Make TestLib::perl2host more consistent and robust
authorAndrew Dunstan <andrew@dunslane.net>
Thu, 29 Jul 2021 16:15:03 +0000 (12:15 -0400)
committerAndrew Dunstan <andrew@dunslane.net>
Thu, 29 Jul 2021 16:15:03 +0000 (12:15 -0400)
Sometimes cygpath has been observed to return a path with a trailing
slash. That can cause problems, Also, make "cygpath" usage
consistent with "pwd -W" with respect to the use of forward slashes.

Backpatch to release 14 where the current code was introduced.

src/test/perl/TestLib.pm

index 15572abbea403994f834b193a8dbdf2824240ac6..cbab1587cc2f9a52e1172708b89f269e6f68155b 100644 (file)
@@ -304,6 +304,8 @@ except for the case of Perl=msys and host=mingw32.  The subject need not
 exist, but its parent or grandparent directory must exist unless cygpath is
 available.
 
+The returned path uses forward slashes but has no trailing slash.
+
 =cut
 
 sub perl2host
@@ -313,10 +315,11 @@ sub perl2host
        if ($is_msys2)
        {
                # get absolute, windows type path
-               my $path = qx{cygpath -a -w "$subject"};
+               my $path = qx{cygpath -a -m "$subject"};
                if (!$?)
                {
                        chomp $path;
+                       $path =~ s!/$!!;
                        return $path if $path;
                }
                # fall through if this didn't work.
@@ -342,6 +345,7 @@ sub perl2host
        # this odd way of calling 'pwd -W' is the only way that seems to work.
        my $dir = qx{sh -c "pwd -W"};
        chomp $dir;
+       $dir =~ s!/$!!;
        chdir $here;
        return $dir . $leaf;
 }