tests: Shut the shell up unless verbose
authorRichard Levitte <levitte@openssl.org>
Sun, 5 Jun 2016 21:01:24 +0000 (23:01 +0200)
committerRichard Levitte <levitte@openssl.org>
Mon, 6 Jun 2016 08:03:01 +0000 (10:03 +0200)
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
test/testlib/OpenSSL/Test.pm

index a6a7f31..2f121e2 100644 (file)
@@ -13,5 +13,4 @@ setup("test_abort");
 
 plan tests => 1;
 
 
 plan tests => 1;
 
-open STDERR, ">", "/dev/null";
 is(run(test(["aborttest"])), 0, "Testing that abort is caught correctly");
 is(run(test(["aborttest"])), 0, "Testing that abort is caught correctly");
index 8a7d0a0..1e9730b 100644 (file)
@@ -353,6 +353,16 @@ sub run {
     my $r = 0;
     my $e = 0;
 
     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
     # 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);
     }
 
        $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};
 
     print STDERR "$prefix$display_cmd => $e\n"
         if !$ENV{HARNESS_ACTIVE} || $ENV{HARNESS_VERBOSE};