summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtests/runtests.pl47
1 files changed, 43 insertions, 4 deletions
diff --git a/tests/runtests.pl b/tests/runtests.pl
index ad37504d1..b02b9f449 100755
--- a/tests/runtests.pl
+++ b/tests/runtests.pl
@@ -659,12 +659,51 @@ sub checkcurl {
if($_ =~ /^curl/) {
$curl = $_;
-
$curl =~ s/^(.*)(libcurl.*)/$1/g;
$libcurl = $2;
-
- if ($curl =~ /win32/)
- {
+ if($curl =~ /mingw32/) {
+ # This is a windows minw32 build, we need to translate the
+ # given path to the "actual" windows path.
+
+ my @m = `mount`;
+ my $matchlen;
+ my $bestmatch;
+ my $mount;
+
+# example mount output:
+# C:\DOCUME~1\Temp on /tmp type user (binmode,noumount)
+# c:\ActiveState\perl on /perl type user (binmode)
+# C:\msys\1.0\bin on /usr/bin type user (binmode,cygexec,noumount)
+# C:\msys\1.0\bin on /bin type user (binmode,cygexec,noumount)
+
+ foreach $mount (@m) {
+ if( $mount =~ /(.*) on ([^ ]*) type /) {
+ my ($mingw, $real)=($2, $1);
+ if($pwd =~ /^$mingw/) {
+ # the path we got from pwd starts with the path
+ # we found on this line in the mount output
+
+ my $len = length($real);
+ if($len > $matchlen) {
+ # we remember the match that is the longest
+ $matchlen = $len;
+ $bestmatch = $real;
+ }
+ }
+ }
+ }
+ if(!$matchlen) {
+ print "Serious error, can't find our \"real\" path!\n";
+ }
+ else {
+ # now prepend the prefix from the mount command to build
+ # our "actual path"
+ $pwd = "$bestmatch$pwd";
+ }
+ $pwd =~ s#\\#/#g;
+ }
+ elsif ($curl =~ /win32/)
+ {
# Native Windows builds don't understand the
# output of cygwin's pwd. It will be
# something like /cygdrive/c/<some path>.