diff --git a/test/recipes/01-test_abort.t b/test/recipes/01-test_abort.t index a6a7f3151ac1a6d059cbbb431e25fa06507c2885..2f121e25bf1b0f7e31516a80cfca21e49ce8a6d9 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 8a7d0a0ac9c0f56f48f38a8defa034ca78ed0746..1e9730bcdceba081900204d64508b34436b41ff2 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};