Add testrunner for makepkg-template
Signed-off-by: Florian Pritz <bluewind@xinu.at>
This commit is contained in:
parent
f617b6acd4
commit
ca5af32b99
|
@ -28,6 +28,7 @@ $(top_srcdir)/test/pacman/tests/TESTS: $(wildcard test/pacman/tests/*.py*)
|
|||
|
||||
TESTS = test/scripts/parseopts_test.sh \
|
||||
test/scripts/human_to_size_test.sh \
|
||||
test/scripts/makepkg-template_test.sh \
|
||||
test/scripts/pacman-db-upgrade-v9.py \
|
||||
test/util/pacsorttest.sh \
|
||||
test/util/vercmptest.sh
|
||||
|
@ -37,6 +38,7 @@ TEST_SUITE_LOG = test/test-suite.log
|
|||
TEST_EXTENSIONS = .py
|
||||
AM_TESTS_ENVIRONMENT = \
|
||||
PMTEST_UTIL_DIR=$(top_builddir)/src/util/; export PMTEST_UTIL_DIR; \
|
||||
PMTEST_SCRIPT_DIR=$(top_builddir)/scripts/; export PMTEST_SCRIPT_DIR; \
|
||||
PMTEST_SCRIPTLIB_DIR=$(top_srcdir)/scripts/library/; export PMTEST_SCRIPTLIB_DIR;
|
||||
LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) \
|
||||
$(top_srcdir)/build-aux/tap-driver.sh
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
check_SCRIPTS = \
|
||||
parseopts_test.sh \
|
||||
pacman-db-upgrade-v9.py \
|
||||
makepkg-template_test.sh \
|
||||
human_to_size_test.sh
|
||||
|
||||
noinst_SCRIPTS = $(check_SCRIPTS)
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
arguments+=()
|
||||
expected_exitcode=0
|
||||
|
||||
# set IFS="" if you want trailing new line(s), otherwise remove it
|
||||
IFS="" read -d '' expected_output <<'EOF'
|
||||
EOF
|
||||
|
||||
IFS="" read -d '' expected_result <<'EOF'
|
||||
EOF
|
|
@ -0,0 +1,67 @@
|
|||
#!/bin/bash
|
||||
|
||||
source "$(dirname "$0")"/../tap.sh || exit 1
|
||||
|
||||
script=${1:-${PMTEST_SCRIPT_DIR}makepkg-template}
|
||||
|
||||
if ! type -p "$script" &>/dev/null; then
|
||||
tap_bail "makepkg-template executable (%s) could not be located" "${script}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
TMPDIR="$(mktemp -d "/tmp/${0##*/}.XXXXXX")"
|
||||
trap "rm -rf '${TMPDIR}'" EXIT TERM
|
||||
cp -r "${0%/*}/makepkg-template-tests" "$TMPDIR/makepkg-template-tests"
|
||||
|
||||
# normalize paths
|
||||
script="$(readlink -f $(type -p "$script"))"
|
||||
cd "$TMPDIR"
|
||||
testdir="./makepkg-template-tests"
|
||||
|
||||
|
||||
total=$(find "$testdir" -maxdepth 1 -mindepth 1 -type d | wc -l)
|
||||
if [[ -z "$total" ]]; then
|
||||
tap_bail "unable to determine total number of tests"
|
||||
exit 1
|
||||
fi
|
||||
tap_plan "$((total*3))"
|
||||
|
||||
run_test() {
|
||||
local testcase=$1 exitcode expected_result expected_output
|
||||
local -a arguments
|
||||
local -i expected_exitcode=-1
|
||||
|
||||
[[ -f "$testdir/$testcase/testcase-config" ]] || continue
|
||||
source "$testdir/$testcase/testcase-config"
|
||||
|
||||
mkdir "$TMPDIR/$testcase"
|
||||
touch "$TMPDIR/$testcase/result"
|
||||
|
||||
# work around autotools not putting symlinks into the release tarball
|
||||
[[ -d "$TMPDIR/$testdir/$testcase/templates" ]] || mkdir "$TMPDIR/$testdir/$testcase/templates"
|
||||
if type -t _setup_testcase >/dev/null; then
|
||||
cd "$TMPDIR/$testdir/$testcase"
|
||||
_setup_testcase
|
||||
unset -f _setup_testcase
|
||||
cd "$TMPDIR"
|
||||
fi
|
||||
|
||||
LC_ALL=C "$script" \
|
||||
--template-dir "$testdir/$testcase/templates" \
|
||||
-p "$testdir/$testcase/PKGBUILD" \
|
||||
-o "$TMPDIR/$testcase/result" \
|
||||
&> "$TMPDIR/$testcase/output" "${arguments[@]}"
|
||||
exitcode=$?
|
||||
|
||||
tap_is_int "$exitcode" "$expected_exitcode" "$testcase exitcode"
|
||||
tap_diff "$TMPDIR/$testcase/output" <(printf "%s" "$expected_output") "$testcase output"
|
||||
tap_diff "$TMPDIR/$testcase/result" <(printf "%s" "$expected_result") "$testcase resulting PKGBUILD"
|
||||
}
|
||||
|
||||
for dir in "$testdir/"*; do
|
||||
if [[ -d "$dir" ]]; then
|
||||
run_test "${dir##*/}"
|
||||
fi
|
||||
done
|
||||
|
||||
tap_finish
|
Loading…
Reference in New Issue