openafs/tests/tests-lib/perl5/afstest.pm
Andrew Deason e07768aaf7 tests: Introduce afstest.pm
Create a perl module for some generic common code for our tests
written in perl: afstest.pm. With this commit, the module just
contains a couple of functions to calculate paths in our src and obj
trees (src_path(), obj_path()), analogous to afstest_src_path and
afstest_obj_path in our C helper library, libafstest_common.la.

Convert all existing perl test code that uses C_TAP_SOURCE/C_TAP_BUILD
to use these new functions.

Change-Id: I5e4d45e3d2d59449bbfc426476cb29b710c73bc1
Reviewed-on: https://gerrit.openafs.org/14800
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
Tested-by: Benjamin Kaduk <kaduk@mit.edu>
2021-10-03 17:55:18 -04:00

62 lines
2.0 KiB
Perl

# 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);
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);
}