When looking for executables, don't forget the extension
authorRichard Levitte <levitte@openssl.org>
Thu, 31 Mar 2016 13:02:02 +0000 (15:02 +0200)
committerRichard Levitte <levitte@openssl.org>
Thu, 31 Mar 2016 17:54:37 +0000 (19:54 +0200)
Because some operating systems have executable extensions, typically
".exe", we need to append it when looking for files in test() and
app() (or rather, their subroutines).

Reviewed-by: Rich Salz <rsalz@openssl.org>
test/testlib/OpenSSL/Test.pm

index c2b9f5c..53a15c4 100644 (file)
@@ -680,10 +680,20 @@ sub __bldtop_dir {
     return catdir($directories{BLDTOP},@_);
 }
 
+sub __exeext {
+    my $ext = "";
+    if ($^O eq "VMS" ) {       # VMS
+       $ext = ".exe";
+    } elsif ($^O eq "MSWin32") { # Windows
+       $ext = ".exe";
+    }
+    return $ENV{"EXE_EXT"} || $ext;
+}
+
 sub __test_file {
     BAIL_OUT("Must run setup() first") if (! $test_name);
 
-    my $f = pop;
+    my $f = pop . __exeext();
     $f = catfile($directories{BLDTEST},@_,$f);
     $f = catfile($directories{SRCTEST},@_,$f) unless -x $f;
     return $f;
@@ -701,7 +711,7 @@ sub __perltest_file {
 sub __apps_file {
     BAIL_OUT("Must run setup() first") if (! $test_name);
 
-    my $f = pop;
+    my $f = pop . __exeext();
     $f = catfile($directories{BLDAPPS},@_,$f);
     $f = catfile($directories{SRCAPPS},@_,$f) unless -x $f;
     return $f;
@@ -790,23 +800,20 @@ sub __fixup_cmd {
     my $exe_shell = shift;
 
     my $prefix = __bldtop_file("util", "shlib_wrap.sh")." ";
-    my $ext = $ENV{"EXE_EXT"} || "";
 
     if (defined($exe_shell)) {
        $prefix = "$exe_shell ";
     } elsif ($^O eq "VMS" ) {  # VMS
        $prefix = ($prog =~ /^(?:[\$a-z0-9_]+:)?[<\[]/i ? "mcr " : "mcr []");
-       $ext = ".exe";
     } elsif ($^O eq "MSWin32") { # Windows
        $prefix = "";
-       $ext = ".exe";
     }
 
     # We test both with and without extension.  The reason
     # is that we might be passed a complete file spec, with
     # extension.
     if ( ! -x $prog ) {
-       my $prog = "$prog$ext";
+       my $prog = "$prog";
        if ( ! -x $prog ) {
            $prog = undef;
        }