Use $Test::Builder::Level in TAP test functions

In TAP test functions, that is, those that produce test results, locally
increment $Test::Builder::Level.  This has the effect that test failures
are reported at the callers location rather than somewhere in the test
support libraries.

Reviewed-by: Heikki Linnakangas <hlinnaka@iki.fi>
This commit is contained in:
Peter Eisentraut 2018-05-22 14:25:01 -04:00
parent 65782346a4
commit c4309f4aee
4 changed files with 27 additions and 0 deletions

View File

@ -87,6 +87,8 @@ sub standby_psql
# expected
sub check_query
{
local $Test::Builder::Level = $Test::Builder::Level + 1;
my ($query, $expected_stdout, $test_name) = @_;
my ($stdout, $stderr);

View File

@ -1366,6 +1366,8 @@ PostgresNode.
sub command_ok
{
local $Test::Builder::Level = $Test::Builder::Level + 1;
my $self = shift;
local $ENV{PGPORT} = $self->port;
@ -1384,6 +1386,8 @@ TestLib::command_fails with our PGPORT. See command_ok(...)
sub command_fails
{
local $Test::Builder::Level = $Test::Builder::Level + 1;
my $self = shift;
local $ENV{PGPORT} = $self->port;
@ -1402,6 +1406,8 @@ TestLib::command_like with our PGPORT. See command_ok(...)
sub command_like
{
local $Test::Builder::Level = $Test::Builder::Level + 1;
my $self = shift;
local $ENV{PGPORT} = $self->port;
@ -1420,6 +1426,8 @@ TestLib::command_checks_all with our PGPORT. See command_ok(...)
sub command_checks_all
{
local $Test::Builder::Level = $Test::Builder::Level + 1;
my $self = shift;
local $ENV{PGPORT} = $self->port;
@ -1442,6 +1450,8 @@ The log file is truncated prior to running the command, however.
sub issues_sql_like
{
local $Test::Builder::Level = $Test::Builder::Level + 1;
my ($self, $cmd, $expected_sql, $test_name) = @_;
local $ENV{PGPORT} = $self->port;

View File

@ -366,6 +366,7 @@ sub check_pg_config
#
sub command_ok
{
local $Test::Builder::Level = $Test::Builder::Level + 1;
my ($cmd, $test_name) = @_;
my $result = run_log($cmd);
ok($result, $test_name);
@ -374,6 +375,7 @@ sub command_ok
sub command_fails
{
local $Test::Builder::Level = $Test::Builder::Level + 1;
my ($cmd, $test_name) = @_;
my $result = run_log($cmd);
ok(!$result, $test_name);
@ -382,6 +384,7 @@ sub command_fails
sub command_exit_is
{
local $Test::Builder::Level = $Test::Builder::Level + 1;
my ($cmd, $expected, $test_name) = @_;
print("# Running: " . join(" ", @{$cmd}) . "\n");
my $h = IPC::Run::start $cmd;
@ -404,6 +407,7 @@ sub command_exit_is
sub program_help_ok
{
local $Test::Builder::Level = $Test::Builder::Level + 1;
my ($cmd) = @_;
my ($stdout, $stderr);
print("# Running: $cmd --help\n");
@ -417,6 +421,7 @@ sub program_help_ok
sub program_version_ok
{
local $Test::Builder::Level = $Test::Builder::Level + 1;
my ($cmd) = @_;
my ($stdout, $stderr);
print("# Running: $cmd --version\n");
@ -430,6 +435,7 @@ sub program_version_ok
sub program_options_handling_ok
{
local $Test::Builder::Level = $Test::Builder::Level + 1;
my ($cmd) = @_;
my ($stdout, $stderr);
print("# Running: $cmd --not-a-valid-option\n");
@ -443,6 +449,7 @@ sub program_options_handling_ok
sub command_like
{
local $Test::Builder::Level = $Test::Builder::Level + 1;
my ($cmd, $expected_stdout, $test_name) = @_;
my ($stdout, $stderr);
print("# Running: " . join(" ", @{$cmd}) . "\n");
@ -455,6 +462,7 @@ sub command_like
sub command_like_safe
{
local $Test::Builder::Level = $Test::Builder::Level + 1;
# Doesn't rely on detecting end of file on the file descriptors,
# which can fail, causing the process to hang, notably on Msys
@ -475,6 +483,7 @@ sub command_like_safe
sub command_fails_like
{
local $Test::Builder::Level = $Test::Builder::Level + 1;
my ($cmd, $expected_stderr, $test_name) = @_;
my ($stdout, $stderr);
print("# Running: " . join(" ", @{$cmd}) . "\n");
@ -493,6 +502,8 @@ sub command_fails_like
# - test_name: name of test
sub command_checks_all
{
local $Test::Builder::Level = $Test::Builder::Level + 1;
my ($cmd, $expected_ret, $out, $err, $test_name) = @_;
# run command

View File

@ -38,6 +38,8 @@ our @EXPORT = qw(
# The second argument is a complementary connection string.
sub test_connect_ok
{
local $Test::Builder::Level = $Test::Builder::Level + 1;
my ($common_connstr, $connstr, $test_name) = @_;
my $cmd = [
@ -52,6 +54,8 @@ sub test_connect_ok
sub test_connect_fails
{
local $Test::Builder::Level = $Test::Builder::Level + 1;
my ($common_connstr, $connstr, $expected_stderr, $test_name) = @_;
my $cmd = [