timescaledb/test/pg_prove.sh
Markos Fountoulakis 9d0d159ac1 Port perl tests to support PG15
Port the timescaledb perl tests and the corresponding infrastructure to
support the new perl namespace introduced in PG15.

https://github.com/postgres/postgres/commit/b3b4d8e6
2022-09-23 11:40:48 +03:00

68 lines
1.9 KiB
Bash
Executable File

#!/usr/bin/env bash
# Wrapper around perl prove utility to control running of TAP tests
#
# The following control variable is supported:
#
# PROVE_TESTS only run TAP tests from this list
# e.g make provecheck PROVE_TESTS="t/foo.pl t/bar.pl"
#
# Note that you can also use regular expressions to run multiple
# taps tests matching the pattern:
#
# e.g make provecheck PROVE_TESTS="t/*chunk*"
#
PROVE_TESTS=${PROVE_TESTS:-}
PROVE=${PROVE:-prove}
echo "SKIPS: ${SKIPS}"
# If PROVE_TESTS is specified then run those subset of TAP tests even if
# TESTS is also specified
if [ -z "$PROVE_TESTS" ] && [ -z "${SKIPS}" ]
then
# Exit early if we are running with TESTS=expr
if [ -n "$TESTS" ]
then
exit 0
fi
FINAL_TESTS=$(ls -1 t/*.pl 2>/dev/null)
elif [ -z "$PROVE_TESTS" ] && [ -n "${SKIPS}" ]
then
ALL_TESTS=$(ls -1 t/*.pl 2>/dev/null)
FILTERED_TESTS=""
# disable path expansion to make SKIPS='*' work
set -f
# to support wildcards in SKIPS we match the SKIPS
# list against the actual list of tests
for test_name in ${ALL_TESTS}; do
for test_pattern in ${SKIPS}; do
# shellcheck disable=SC2053
# We do want to match globs in $test_pattern here.
if [[ $test_name == t/${test_pattern}.pl ]]; then
continue 2
fi
done
FILTERED_TESTS="${FILTERED_TESTS}\n${test_name}"
done
FINAL_TESTS=$(echo -e "${FILTERED_TESTS}" | tr '\n' ' ' | sed -e 's/^ *//')
else
FINAL_TESTS=$PROVE_TESTS
fi
if [ -z "$FINAL_TESTS" ]
then
echo "No TAP tests to run for the current configuration, skipping..."
exit 0;
fi
PG_VERSION_MAJOR=${PG_VERSION_MAJOR} ${PROVE} \
-I "${SRC_DIR}/src/test/perl" \
-I "${CM_SRC_DIR}/test/perl" \
-I "${PG_LIBDIR}/pgxs/src/test/perl" \
-I "${PG_PKGLIBDIR}/pgxs/src/test/perl" \
-I "${PG_LIBDIR}/postgresql/pgxs/src/test/perl" \
$FINAL_TESTS