提交 f75f007c 编写于 作者: R Richard Levitte

OpenSSL::Test: supported filtered command output

95-test_external_boringssl.t had a specialised run() variant to prefix
the command output so it wouldn't disturb Test::Harness.  This
functionality if now moved to the run() command, using the added
option 'prefix' that can be set to the string to prefix the output
with.
Reviewed-by: NRich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/3201)
上级 e80a0f65
...@@ -22,22 +22,10 @@ plan skip_all => "BoringSSL runner not detected" ...@@ -22,22 +22,10 @@ plan skip_all => "BoringSSL runner not detected"
plan tests => 1; plan tests => 1;
indir $ENV{BORING_RUNNER_DIR} => sub { indir $ENV{BORING_RUNNER_DIR} => sub {
ok(filter_run(cmd(["go", "test", "-shim-path", ok(run(cmd(["go", "test", "-shim-path",
bldtop_file("test", "ossl_shim", "ossl_shim"), bldtop_file("test", "ossl_shim", "ossl_shim"),
"-shim-config", "-shim-config",
srctop_file("test", "ossl_shim", "ossl_config.json"), srctop_file("test", "ossl_shim", "ossl_config.json"),
"-pipe", "-allow-unimplemented"])), "-pipe", "-allow-unimplemented"]), prefix => "go test: "),
"running BoringSSL tests"); "running BoringSSL tests");
}, create => 0, cleanup => 0; }, create => 0, cleanup => 0;
# Filter the output so that the "ok" printed by go test doesn't confuse
# Test::More. Without that it thinks there has been one more test run than was
# planned
sub filter_run {
my $cmd = cmdstr(shift);
open(PIPE, "-|", $cmd);
while(<PIPE>) {
print STDOUT "go test: ", $_;
}
close PIPE;
}
...@@ -403,6 +403,12 @@ return the resulting output as an array of lines. If false or not given, ...@@ -403,6 +403,12 @@ return the resulting output as an array of lines. If false or not given,
the command will be executed with C<system()>, and C<run> will return 1 if the command will be executed with C<system()>, and C<run> will return 1 if
the command was successful or 0 if it wasn't. the command was successful or 0 if it wasn't.
=item B<prefix =E<gt> EXPR>
If specified, EXPR will be used as a string to prefix the output from the
command. This is useful if the output contains lines starting with C<ok >
or C<not ok > that can disturb Test::Harness.
=item B<statusvar =E<gt> VARREF> =item B<statusvar =E<gt> VARREF>
If used, B<VARREF> must be a reference to a scalar variable. It will be If used, B<VARREF> must be a reference to a scalar variable. It will be
...@@ -452,8 +458,19 @@ sub run { ...@@ -452,8 +458,19 @@ sub run {
# do. For example, a program that gets aborted (and therefore signals # do. For example, a program that gets aborted (and therefore signals
# SIGABRT = 6) will appear to exit with the code 134. We mimic this # SIGABRT = 6) will appear to exit with the code 134. We mimic this
# to make it easier to compare with a manual run of the command. # to make it easier to compare with a manual run of the command.
if ($opts{capture}) { if ($opts{capture} || defined($opts{prefix})) {
@r = `$prefix$cmd`; my $pipe;
open($pipe, '-|', "$prefix$cmd") or die "Can't start command: $!";
while(<$pipe>) {
my $l = ($opts{prefix} // "") . $_;
if ($opts{capture}) {
push @r, $l;
} else {
print STDOUT $l;
}
}
close $pipe;
} else { } else {
system("$prefix$cmd"); system("$prefix$cmd");
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册