From: Richard Levitte Date: Mon, 6 Jun 2016 13:01:50 +0000 (+0200) Subject: tests: fix the shutting up of the shell X-Git-Tag: OpenSSL_1_1_0-pre6~537 X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff_plain;h=81b538e51e34e258af96ebaf147c0059ef855829;hp=ec772a817afc0f788c38006f623204a7d76221ec tests: fix the shutting up of the shell If we're going to redirect STDERR and STDOUT, it's better to do it by the book. This fix is a straight copy of examples in the perlfunc manual. Reviewed-by: Matt Caswell --- diff --git a/test/testlib/OpenSSL/Test.pm b/test/testlib/OpenSSL/Test.pm index 1e9730bcdc..2cfb22a653 100644 --- a/test/testlib/OpenSSL/Test.pm +++ b/test/testlib/OpenSSL/Test.pm @@ -356,9 +356,11 @@ sub run { # 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; + my $save_STDOUT; + my $save_STDERR; if ($ENV{HARNESS_ACTIVE} && !$ENV{HARNESS_VERBOSE}) { + open $save_STDOUT, '>&', \*STDOUT or die "Can't dup STDOUT: $!"; + open $save_STDERR, '>&', \*STDERR or die "Can't dup STDERR: $!"; open STDOUT, ">", devnull(); open STDERR, ">", devnull(); } @@ -379,9 +381,9 @@ sub run { if ($ENV{HARNESS_ACTIVE} && !$ENV{HARNESS_VERBOSE}) { close STDOUT; close STDERR; + open STDOUT, '>&', $save_STDOUT or die "Can't restore STDOUT: $!"; + open STDERR, '>&', $save_STDERR or die "Can't restore STDERR: $!"; } - *STDOUT = *save_STDOUT; - *STDERR = *save_STDERR; print STDERR "$prefix$display_cmd => $e\n" if !$ENV{HARNESS_ACTIVE} || $ENV{HARNESS_VERBOSE};