From 78e91586fbeb2c3a54d2a8a28dadeeb1eb0f57a8 Mon Sep 17 00:00:00 2001
From: Richard Levitte <levitte@openssl.org>
Date: Sun, 5 Jun 2016 23:01:24 +0200
Subject: [PATCH] tests: Shut the shell up unless verbose

In rare cases, the shell we run test programs in may have complaints.
Shut those up unless testing verbosely.

Reviewed-by: Viktor Dukhovni <viktor@openssl.org>
---
 test/recipes/01-test_abort.t |  1 -
 test/testlib/OpenSSL/Test.pm | 17 +++++++++++++++++
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/test/recipes/01-test_abort.t b/test/recipes/01-test_abort.t
index a6a7f3151a..2f121e25bf 100644
--- a/test/recipes/01-test_abort.t
+++ b/test/recipes/01-test_abort.t
@@ -13,5 +13,4 @@ setup("test_abort");
 
 plan tests => 1;
 
-open STDERR, ">", "/dev/null";
 is(run(test(["aborttest"])), 0, "Testing that abort is caught correctly");
diff --git a/test/testlib/OpenSSL/Test.pm b/test/testlib/OpenSSL/Test.pm
index 8a7d0a0ac9..1e9730bcdc 100644
--- a/test/testlib/OpenSSL/Test.pm
+++ b/test/testlib/OpenSSL/Test.pm
@@ -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};
 
-- 
2.25.1