2020-12-28 19:12:59 +00:00
|
|
|
# Copyright (c) 2020 Sine Nomine Associates. All rights reserved.
|
|
|
|
#
|
|
|
|
# Redistribution and use in source and binary forms, with or without
|
|
|
|
# modification, are permitted provided that the following conditions
|
|
|
|
# are met:
|
|
|
|
# 1. Redistributions of source code must retain the above copyright
|
|
|
|
# notice, this list of conditions and the following disclaimer.
|
|
|
|
# 2. Redistributions in binary form must reproduce the above copyright
|
|
|
|
# notice, this list of conditions and the following disclaimer in the
|
|
|
|
# documentation and/or other materials provided with the distribution.
|
|
|
|
#
|
|
|
|
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR `AS IS'' AND ANY EXPRESS OR
|
|
|
|
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
|
|
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
|
|
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
|
|
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
|
|
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
|
|
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
|
|
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
|
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
|
|
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
|
|
|
|
package afstest;
|
|
|
|
require Exporter;
|
|
|
|
our @ISA = qw(Exporter);
|
|
|
|
our @EXPORT_OK = qw(src_path obj_path);
|
|
|
|
|
tests: Redirect diag() to stdout by default
Currently our perl tests use Test::More, which sends diag() messages
to stderr, including when reporting why a test failed.
Our 'runtests' harness from c-tap-harness discards stderr from test
programs, unless we run in single-test mode (-o). As a result, when we
run tests with 'runtests -v' and a test fails, we can't see any
diagnostic information if the test was using perl's Test::More,
including why a test failed. If the test is written in C using
c-tap-harness bindings, diag() goes to stdout, and this problem
doesn't happen.
To make sure we can see diag() messages from perl tests, change the
default behavior for Test::More to print diag() messages to stdout,
where they will be read by 'runtests' and shown by 'runtests -v'. The
diag messages are still discarded when running in non-v (and non-o)
mode.
Change-Id: I971a61cb9c83e85949ba6adf9af0ee54b0b23680
Reviewed-on: https://gerrit.openafs.org/15734
Tested-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
2024-04-09 21:31:13 +01:00
|
|
|
use Test::More;
|
|
|
|
|
|
|
|
# Make Test::More print diag() messages to stdout, instead of stderr.
|
|
|
|
# Historically, diag() from Test::More prints to stderr, but diag() from
|
|
|
|
# c-tap-harness prints to stdout as part of the TAP stream. Running
|
|
|
|
# 'runtests -v' ignores stderr, so by default any perl diag()s are lost. Change
|
|
|
|
# the default behavior to diag() to stdout, so we can see diagnostics in
|
|
|
|
# 'runtests -v' when tests fail.
|
|
|
|
my $tb = Test::More->builder;
|
|
|
|
$tb->failure_output($tb->output);
|
|
|
|
|
2020-12-28 19:12:59 +00:00
|
|
|
sub
|
|
|
|
x_path($;$)
|
|
|
|
{
|
|
|
|
my ($env_var, $path) = @_;
|
|
|
|
my $tdir = $ENV{$env_var};
|
|
|
|
if (!defined($tdir)) {
|
|
|
|
# If C_TAP_SOURCE/C_TAP_BUILD isn't set, we assume we're running from
|
|
|
|
# the same cwd as one of the test programs (e.g. 'tests/foo/'). So to
|
|
|
|
# get to 'tests/', just go up one level.
|
|
|
|
$tdir = "..";
|
|
|
|
}
|
|
|
|
|
|
|
|
# $tdir now represents the 'tests/' dir. Go one level up to get to the
|
|
|
|
# top-level dir.
|
|
|
|
if (defined($path)) {
|
|
|
|
return "$tdir/../$path";
|
|
|
|
} else {
|
|
|
|
return "$tdir/..";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
sub
|
|
|
|
src_path(;$)
|
|
|
|
{
|
|
|
|
my $path = $_[0];
|
|
|
|
return x_path("C_TAP_SOURCE", $path);
|
|
|
|
}
|
|
|
|
|
|
|
|
sub
|
|
|
|
obj_path(;$)
|
|
|
|
{
|
|
|
|
my $path = $_[0];
|
|
|
|
return x_path("C_TAP_BUILD", $path);
|
|
|
|
}
|