From 76da18780719ddb28be4e1d30bd34be8fac11f42 Mon Sep 17 00:00:00 2001 From: Dan Church Date: Thu, 20 Jul 2023 15:37:17 -0500 Subject: [PATCH] CI: Improve method of capturing output --- t/TestFunctions.pm | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/t/TestFunctions.pm b/t/TestFunctions.pm index cb9a100..fc68193 100644 --- a/t/TestFunctions.pm +++ b/t/TestFunctions.pm @@ -12,6 +12,8 @@ use File::Basename qw/ dirname /; require File::Temp; +use IPC::Open3 qw/ open3 /; +use Symbol qw/ gensym /; use Exporter; use parent 'Exporter'; @@ -102,7 +104,6 @@ sub run_script_capture { my @args = @_; my @cmd = (SCRIPT, @args); - use IPC::Open3 qw/ open3 /; my $stderr = File::Temp->new( TMPDIR => 1, CLEANUP => 1, @@ -112,20 +113,20 @@ sub run_script_capture { CLEANUP => 1, ); my $in = ''; - local *CATCHOUT = $stdout; - local *CATCHERR = $stderr; + my $child_out = gensym(); + my $child_err = gensym(); print STDERR "+ @cmd\n"; - my $pid = open3 $in, '>&CATCHOUT', '>&CATCHERR', @cmd; + my $pid = open3 $in, $child_out, $child_err, @cmd; waitpid $pid, 0; - foreach my $handle (\*CATCHOUT, \*CATCHERR) { + foreach my $handle ($child_out, $child_err) { seek $handle, 0, 0; } local $/; return ( $?, - scalar , # slurp! - scalar , # slurp! + scalar <$child_out>, # slurp! + scalar <$child_err>, # slurp! ); }