Test suite: minimal required to get mingw 'make test' work under Linux.

(part by Alessandro Ghedini)

Reviewed-by: Richard Levitte <levitte@openssl.org>
diff --git a/test/recipes/25-test_verify.t b/test/recipes/25-test_verify.t
index 10897a1..7c0f091 100644
--- a/test/recipes/25-test_verify.t
+++ b/test/recipes/25-test_verify.t
@@ -8,6 +8,9 @@
 
 setup("test_verify");
 
+plan skip_all => "no rehash.time was found."
+    unless (-f top_file("rehash.time"));
+
 plan tests => 1;
 
 note("Expect some failures and expired certificate");
diff --git a/test/recipes/80-test_ssl.t b/test/recipes/80-test_ssl.t
index 6e5e22e..5f520de 100644
--- a/test/recipes/80-test_ssl.t
+++ b/test/recipes/80-test_ssl.t
@@ -414,7 +414,7 @@
 		      map { split(/:/, $_) }
 		      run(app(["openssl", "ciphers", "${_}:$ciphers"]),
                           capture => 1);
-		  chomp @c;
+		  map { s/\R//; } @c;  # chomp @c;
 		  $protocolciphersuitcount += scalar @c;
 		  $_ => [ @c ] } @protocols;
 
diff --git a/test/recipes/tconversion.pl b/test/recipes/tconversion.pl
index 011dcbf..07e3406 100644
--- a/test/recipes/tconversion.pl
+++ b/test/recipes/tconversion.pl
@@ -68,14 +68,14 @@
       }
 
       if ($testtype ne "p7d") {
-	  is(compare_text("$testtype-fff.p", "$testtype-f.p"), 0,
+	  is(cmp_text("$testtype-fff.p", "$testtype-f.p"), 0,
 	     'comparing orig to p');
       }
 
       foreach my $to (@conversionforms) {
 	  next if $to eq "d";
 	  foreach my $from (@conversionforms) {
-	      is(compare_text("$testtype-f.$to", "$testtype-ff.$from$to"), 0,
+	      is(cmp_text("$testtype-f.$to", "$testtype-ff.$from$to"), 0,
 		 "comparing $to to $from$to");
 	  }
       }
@@ -85,4 +85,12 @@
     unlink glob "$testtype-fff.*";
 }
 
+sub cmp_text {
+    return compare_text(@_, sub {
+        $_[0] =~ s/\R//g;
+        $_[1] =~ s/\R//g;
+        return $_[0] ne $_[1];
+    });
+}
+
 1;
diff --git a/test/testlib/OpenSSL/Test.pm b/test/testlib/OpenSSL/Test.pm
index c64d68d..453e3d7 100644
--- a/test/testlib/OpenSSL/Test.pm
+++ b/test/testlib/OpenSSL/Test.pm
@@ -357,7 +357,7 @@
 =cut
 
 sub top_dir {
-    return __top_file(@_, "");	# This caters for operating systems that have
+    return __top_dir(@_);	# This caters for operating systems that have
 				# a very distinct syntax for directories.
 }
 
@@ -577,6 +577,12 @@
     return catfile($directories{TOP},@_,$f);
 }
 
+sub __top_dir {
+    BAIL_OUT("Must run setup() first") if (! $test_name);
+
+    return catdir($directories{TOP},@_);
+}
+
 sub __test_file {
     BAIL_OUT("Must run setup() first") if (! $test_name);
 
@@ -668,7 +674,9 @@
     my $prefix = __top_file("util", "shlib_wrap.sh")." ";
     my $ext = $ENV{"EXE_EXT"} || "";
 
-    if ( $^O eq "VMS" ) {	# VMS
+    if (defined($ENV{EXE_SHELL})) {
+	$prefix = "$ENV{EXE_SHELL} ";
+    } elsif ($^O eq "VMS" ) {	# VMS
 	$prefix = "mcr ";
 	$ext = ".exe";
     } elsif ($^O eq "MSWin32") { # Windows
diff --git a/test/testlib/OpenSSL/Test/Utils.pm b/test/testlib/OpenSSL/Test/Utils.pm
index fc9b533..5312c205 100644
--- a/test/testlib/OpenSSL/Test/Utils.pm
+++ b/test/testlib/OpenSSL/Test/Utils.pm
@@ -46,7 +46,7 @@
 sub check_disabled {
 #print STDERR "Running check_disabled\n";
     foreach (run(app(["openssl", "list", "-disabled"]), capture => 1)) {
-        chomp;
+        s/\R//;         # chomp;
         next if /:/;    # skip header
         $disabled{lc $_} = 1;
     }
diff --git a/util/shlib_wrap.sh b/util/shlib_wrap.sh
index 8775cb5..646b0fe 100755
--- a/util/shlib_wrap.sh
+++ b/util/shlib_wrap.sh
@@ -88,7 +88,7 @@
 	export LD_PRELOAD _RLD_LIST DYLD_INSERT_LIBRARIES
 fi
 
-cmd="$1${EXE_EXT}"
+cmd="$1"; [ -x "$cmd" ] || cmd="$cmd${EXE_EXT}"
 shift
 if [ $# -eq 0 ]; then
 	exec "$cmd"	# old sh, such as Tru64 4.x, fails to expand empty "$@"