diff options
Diffstat (limited to 'tests/gi-tester')
-rwxr-xr-x | tests/gi-tester | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/tests/gi-tester b/tests/gi-tester new file mode 100755 index 00000000..51199dde --- /dev/null +++ b/tests/gi-tester @@ -0,0 +1,55 @@ +#!/usr/bin/env bash + +targetname=$1 + +# Note the target name for the documentation targets (-C, -Python, -Gjs) +# incorrectly include a relative path to the srcdir, strip that off for usage +# in directory diffs. +targetbase=${targetname##*/} + +case $targetname in +*.gir) + len=${#targetname} + limit=$(expr $len - 4) + diff -u -U 10 ${srcdir}/${targetname:0:${limit}}-expected.gir ${builddir}/${targetname} + exit $? + ;; +*.typelib) + # Do nothing for typelibs, this just ensures they build as part of the tests + exit 0 + ;; +*-C) + diff -r -u -w -B -U 10 ${srcdir}/${targetbase}-expected ${builddir}/${targetbase} + exit $? + ;; +*-Python) + diff -r -u -w -B -U 10 ${srcdir}/${targetbase}-expected ${builddir}/${targetbase} + exit $? + ;; +*-Gjs) + diff -r -u -w -B -U 10 ${srcdir}/${targetbase}-expected ${builddir}/${targetbase} + exit $? + ;; +*-sections.txt) + diff -u -w -B -U 10 ${srcdir}/${targetname::-4}-expected.txt ${builddir}/${targetname} + exit $? + ;; +*.py) + if [[ -z "${TESTARGS}" ]]; then + # Run as regular Python file if TESTARGS is empty + PYTHONPATH=${top_builddir}:${top_srcdir} ${PYTHON} ${targetname} + exit $? + else + # Run as Python unittest module with TESTARGS concatenated to the basename of target. + # Ensure we are in the directory containing the python module first. + export PYTHONPATH=$(readlink -f ${top_builddir}):$(readlink -f ${top_srcdir}) + modulename=$(basename "${targetbase}" .py) + (cd $(dirname ${targetname}) && ${PYTHON} -m unittest -v "${modulename}.${TESTARGS}") + exit $? + fi + ;; +*) + echo $"Usage: [TESTARGS=<args>] gi-tester <targetname>" + exit 1 + ;; +esac |