Merge branch 'sr/reusable-test-runner-script'

Signed-off-by: Elijah Newren <newren@gmail.com>
This commit is contained in:
Elijah Newren 2021-06-07 08:21:46 -07:00
commit a10fa46010
4 changed files with 40 additions and 19 deletions

View File

@ -24,21 +24,11 @@ jobs:
printf '#!/bin/sh\n\nexec python "$@"\n' >python3 &&
export PATH=$PWD:$PATH &&
export PYTHONPATH=$PWD &&
export TEST_SHELL_PATH=/bin/sh &&
failed=0 &&
cd t &&
for t in t[0-9]*.sh
do
printf '\n\n== %s ==\n' "$t" &&
bash $t -q -v -x ||
failed=$(($failed+1))
done &&
if test 0 != $failed
if ! t/run_tests -q -v -x
then
mkdir ../failed &&
tar czf ../failed/failed.tar.gz .
mkdir failed &&
tar czf failed/failed.tar.gz t
exit 1
fi
- name: upload failed tests' directories

View File

@ -12,7 +12,7 @@ build:
@echo Nothing to do: filter-repo is a script which needs no compilation.
test:
cd t && time ./run_coverage
time t/run_coverage
# fixup_locale might matter once we actually have translations, but right now
# we don't. It might not even matter then, because python has a fallback podir.

View File

@ -1,5 +1,7 @@
#!/bin/bash
set -eu
orig_dir=$(cd $(dirname $0) && pwd -P)
tmpdir=$(mktemp -d)
@ -16,12 +18,12 @@ EOF
export COVERAGE_PROCESS_START=$tmpdir/.coveragerc
export PYTHONPATH=$tmpdir:
# We pretend filenames are unicode for two reasons: (1) because it exercises
# more code, and (2) this setting will detect accidental use of unicode strings
# for file/directory names when it should always be bytestrings.
export PRETEND_UNICODE_ARGS=1
ls t939*.sh | xargs -n 1 bash
# Produce a coverage report, even if the tests fail
set +e
$orig_dir/run_tests
exitcode=$?
set -e
cd $tmpdir
coverage3 combine
@ -29,3 +31,5 @@ coverage3 html -d $orig_dir/report
coverage3 report -m
cd $orig_dir
rm -rf $tmpdir
exit $exitcode

27
t/run_tests Executable file
View File

@ -0,0 +1,27 @@
#!/bin/bash
set -eu
cd $(dirname $0)
# Put git_filter_repo.py on the front of PYTHONPATH
export PYTHONPATH="$PWD/..${PYTHONPATH:+:$PYTHONPATH}"
# We pretend filenames are unicode for two reasons: (1) because it exercises
# more code, and (2) this setting will detect accidental use of unicode strings
# for file/directory names when it should always be bytestrings.
export PRETEND_UNICODE_ARGS=1
export TEST_SHELL_PATH=/bin/sh
failed=0
for t in t[0-9]*.sh
do
printf '\n\n== %s ==\n' "$t"
bash $t "$@" || failed=$(($failed+1))
done
if [ 0 -lt $failed ]
then
exit 1
fi