diff options
Diffstat (limited to 'tests/deckard/ci/compare-tests.sh')
-rwxr-xr-x | tests/deckard/ci/compare-tests.sh | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/deckard/ci/compare-tests.sh b/tests/deckard/ci/compare-tests.sh new file mode 100755 index 0000000..63d8c67 --- /dev/null +++ b/tests/deckard/ci/compare-tests.sh @@ -0,0 +1,30 @@ +#!/bin/bash +set -o nounset -o xtrace -o errexit +source "$(dirname "$0")/common.sh" +TESTRUNNER="$1" +: comparing results from test script "${TESTRUNNER}" + +# Run specified test runner on HEAD and again on merge base for master..HEAD +# Fail if result of any test not modified between master..HEAD changed +# (i.e. any change in Deckard should not change results of non-modified tests) + +function find_modified_tests { + : detect tests affected by current merge request + : store list of modified tests in ${MODIFIED_TESTS_FILE} + git diff --numstat "${MERGEBASE}..${HEAD}" | cut -f 3 | fgrep .rpl > "${MODIFIED_TESTS_FILE}" || : no modified tests detected +} + +MODIFIED_TESTS_FILE="/tmp/modified_tests" +find_modified_tests +LOGS[0]="${MODIFIED_TESTS_FILE}" +LOGS[1]="/tmp/base.xml" +LOGS[2]="/tmp/head.xml" + +: get test results from version under test +"${TESTRUNNER}" -n $(nproc) --junit-xml=/tmp/head.xml || : some tests on HEAD ${HEAD} failed + +: get test results from common ancestor with master branch +git checkout --force --detach "${MERGEBASE}" +git clean -xdf +"${TESTRUNNER}" -n $(nproc) --junit-xml=/tmp/base.xml || : some tests on merge base ${MERGEBASE} failed +"${CIDIR}/junit-compare.py" /tmp/head.xml /tmp/base.xml /tmp/modified_tests && echo "OK, no differences found" |