From 3d56bdc7acb5f70e57dc4a19b99ad31e7a13127a Mon Sep 17 00:00:00 2001 From: David Fetter Date: Sun, 28 Apr 2019 08:01:01 -0700 Subject: [PATCH v3] Add a way to supply stdin to TAP tests To: hackers MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------2.21.0" This is a multi-part message in MIME format. --------------2.21.0 Content-Type: text/plain; charset=UTF-8; format=fixed Content-Transfer-Encoding: 8bit by Fabian Coelho This will help increase test coverage for anything that might need it, and a lot of things currently need it. diff --git a/src/test/perl/TestLib.pm b/src/test/perl/TestLib.pm index a164cdbd8c..b9b18950ed 100644 --- a/src/test/perl/TestLib.pm +++ b/src/test/perl/TestLib.pm @@ -519,22 +519,30 @@ sub command_fails_like } # Run a command and check its status and outputs. -# The 5 arguments are: +# The 5 to 6 arguments are: # - cmd: ref to list for command, options and arguments to run # - ret: expected exit status # - out: ref to list of re to be checked against stdout (all must match) # - err: ref to list of re to be checked against stderr (all must match) # - test_name: name of test +# - in: standard input sub command_checks_all { local $Test::Builder::Level = $Test::Builder::Level + 1; - my ($cmd, $expected_ret, $out, $err, $test_name) = @_; + my ($cmd, $expected_ret, $out, $err, $test_name, $in) = @_; # run command my ($stdout, $stderr); print("# Running: " . join(" ", @{$cmd}) . "\n"); - IPC::Run::run($cmd, '>', \$stdout, '2>', \$stderr); + if (defined $in) + { + IPC::Run::run($cmd, '<', \$in, '>', \$stdout, '2>', \$stderr); + } + else + { + IPC::Run::run($cmd, '>', \$stdout, '2>', \$stderr); + } # See http://perldoc.perl.org/perlvar.html#%24CHILD_ERROR my $ret = $?; --------------2.21.0--