summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2016-06-06 15:01:50 +0200
committerRichard Levitte <levitte@openssl.org>2016-06-06 15:51:35 +0200
commit81b538e51e34e258af96ebaf147c0059ef855829 (patch)
tree1fa77d4c5de38f2cdf11e92d2b1f4047ed0a8654 /test
parentec772a817afc0f788c38006f623204a7d76221ec (diff)
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 <matt@openssl.org>
Diffstat (limited to 'test')
-rw-r--r--test/testlib/OpenSSL/Test.pm10
1 files changed, 6 insertions, 4 deletions
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};