diff options
author | Richard Levitte <levitte@openssl.org> | 2019-09-11 11:02:24 +0200 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2019-09-12 14:36:36 +0200 |
commit | f3503cb0f6ffe19c03c731b4b6069f26584917b4 (patch) | |
tree | b7074ba3add2c1ff8effc665a92d809714146bcc /util | |
parent | 45211c563fb12aca50771b3400b833da4095c6de (diff) |
util/perl/OpenSSL/Test.pm: Disable stdout/stderr redirection on non-verbosity
... except on VMS, where output from executed programs doesn't seem to be
captured properly by Test::Harness or TAP::Harness.
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/9862)
Diffstat (limited to 'util')
-rw-r--r-- | util/perl/OpenSSL/Test.pm | 49 |
1 files changed, 31 insertions, 18 deletions
diff --git a/util/perl/OpenSSL/Test.pm b/util/perl/OpenSSL/Test.pm index cf7502b0a6..9f72b66822 100644 --- a/util/perl/OpenSSL/Test.pm +++ b/util/perl/OpenSSL/Test.pm @@ -446,16 +446,21 @@ sub run { die "OpenSSL::Test::run(): statusvar value not a scalar reference" if $opts{statusvar} && ref($opts{statusvar}) ne "SCALAR"; - # 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 + # For some reason, program output, or even output from this function + # somehow isn't caught by TAP::Harness (TAP::Parser?) on VMS, so we're + # silencing it specifically there until further notice. 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(); + if ($^O eq 'VMS') { + # 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 + 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(); + } } $ENV{HARNESS_OSSL_LEVEL} = $level + 1; @@ -489,16 +494,21 @@ sub run { ${$opts{statusvar}} = $r; } - 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: $!"; + # Restore STDOUT / STDERR on VMS + if ($^O eq 'VMS') { + 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: $!"; + } + + print STDERR "$prefix$display_cmd => $e\n" + if !$ENV{HARNESS_ACTIVE} || $ENV{HARNESS_VERBOSE}; + } else { + print STDERR "$prefix$display_cmd => $e\n"; } - print STDERR "$prefix$display_cmd => $e\n" - if !$ENV{HARNESS_ACTIVE} || $ENV{HARNESS_VERBOSE}; - # At this point, $? stops being interesting, and unfortunately, # there are Test::More versions that get picky if we leave it # non-zero. @@ -1244,8 +1254,11 @@ sub __decorate_cmd { my $display_cmd = "$cmdstr$stdin$stdout$stderr"; - $stderr=" 2> ".$null - unless $stderr || !$ENV{HARNESS_ACTIVE} || $ENV{HARNESS_VERBOSE}; + # VMS program output escapes TAP::Parser + if ($^O eq 'VMS') { + $stderr=" 2> ".$null + unless $stderr || !$ENV{HARNESS_ACTIVE} || $ENV{HARNESS_VERBOSE}; + } $cmdstr .= "$stdin$stdout$stderr"; |