tests: Shut the shell up unless verbose
[openssl.git] / test / testlib / OpenSSL / Test.pm
index 8a7d0a0ac9c0f56f48f38a8defa034ca78ed0746..1e9730bcdceba081900204d64508b34436b41ff2 100644 (file)
@@ -353,6 +353,16 @@ sub run {
     my $r = 0;
     my $e = 0;
 
+    # In non-verbose, we want to shut up the command interpreter, in case
+    # it has something to complain about.  On VMS, it might complain both
+    # on stdout and stderr
+    *save_STDOUT = *STDOUT;
+    *save_STDERR = *STDERR;
+    if ($ENV{HARNESS_ACTIVE} && !$ENV{HARNESS_VERBOSE}) {
+        open STDOUT, ">", devnull();
+        open STDERR, ">", devnull();
+    }
+
     # The dance we do with $? is the same dance the Unix shells appear to
     # do.  For example, a program that gets aborted (and therefore signals
     # SIGABRT = 6) will appear to exit with the code 134.  We mimic this
@@ -366,6 +376,13 @@ sub run {
        $r = $hooks{exit_checker}->($e);
     }
 
+    if ($ENV{HARNESS_ACTIVE} && !$ENV{HARNESS_VERBOSE}) {
+        close STDOUT;
+        close STDERR;
+    }
+    *STDOUT = *save_STDOUT;
+    *STDERR = *save_STDERR;
+
     print STDERR "$prefix$display_cmd => $e\n"
         if !$ENV{HARNESS_ACTIVE} || $ENV{HARNESS_VERBOSE};