mirror of
https://gitlab.com/buildroot.org/buildroot.git
synced 2026-11-05 22:52:11 -10:00
The current Gitlab CI mechanism allows to trigger all tests in a CI
pipeline by pushing a branch named <something>-runtime-tests, or to
trigger a single test in a CI pipeline by pushing a branch name
<something>-tests.<name of test>.
However, there are cases where it is useful to run a suite of tests,
for example to run all tests in tests.init.test_busybox.
This commit makes that possible by extending the current semantic of
<something>-tests.<name of test> to not expect a complete test name,
but instead to accept all tests that starts with the given pattern.
This allows to do:
git push gitlab HEAD:foobar-tests.init.test_busybox.TestInitSystemBusyboxRo
like it was the case before. But it now also allows to do:
git push gitlab HEAD:foobar-tests.init.test_busybox
to run all Busybox tests.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
(cherry picked from commit 23186356a1)
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
111 lines
2.7 KiB
Bash
Executable File
111 lines
2.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -e
|
|
set -o pipefail
|
|
|
|
main() {
|
|
local template="${1}"
|
|
|
|
preamble "${template}"
|
|
gen_tests
|
|
}
|
|
|
|
preamble() {
|
|
local template="${1}"
|
|
|
|
cat - "${template}" <<-_EOF_
|
|
# This file is generated; do not edit!
|
|
# Builds appear on https://gitlab.com/buildroot.org/buildroot/pipelines
|
|
|
|
image: ${CI_JOB_IMAGE}
|
|
|
|
_EOF_
|
|
}
|
|
|
|
gen_tests() {
|
|
local -a basics defconfigs runtimes
|
|
local do_basics do_defconfigs do_runtime
|
|
local defconfigs_ext cfg tst
|
|
|
|
basics=( DEVELOPERS flake8 package )
|
|
|
|
defconfigs=( $(cd configs; LC_ALL=C ls -1 *_defconfig) )
|
|
|
|
runtimes=( $(./support/testing/run-tests -l 2>&1 \
|
|
| sed -r -e '/^test_run \((.*)\).*/!d; s//\1/' \
|
|
| LC_ALL=C sort)
|
|
)
|
|
|
|
if [ -n "${CI_COMMIT_TAG}" ]; then
|
|
do_basics=true
|
|
do_defconfigs=base
|
|
do_runtime=true
|
|
elif [ "${CI_PIPELINE_SOURCE}" = "trigger" ]; then
|
|
case "${BR_SCHEDULE_JOBS}" in
|
|
(basic)
|
|
do_basics=true
|
|
do_defconfigs=check
|
|
defconfigs_ext=_check
|
|
;;
|
|
(defconfig)
|
|
do_defconfigs=base
|
|
;;
|
|
(runtime)
|
|
do_runtime=true
|
|
;;
|
|
esac
|
|
else
|
|
case "${CI_COMMIT_REF_NAME}" in
|
|
(*-basics)
|
|
do_basics=true
|
|
do_defconfigs=check
|
|
defconfigs_ext=_check
|
|
;;
|
|
(*-defconfigs)
|
|
do_defconfigs=base
|
|
;;
|
|
(*-*_defconfig)
|
|
defconfigs=( "${CI_COMMIT_REF_NAME##*-}" )
|
|
do_defconfigs=base
|
|
;;
|
|
(*-runtime-tests)
|
|
do_runtime=true
|
|
;;
|
|
(*-tests.*)
|
|
runtimes=( $(./support/testing/run-tests -l 2>&1 \
|
|
| sed -r -e '/^test_run \((.*)\).*/!d; s//\1/' \
|
|
| LC_ALL=C sort \
|
|
| grep "^${CI_COMMIT_REF_NAME##*-}")
|
|
)
|
|
do_runtime=true
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
# If nothing else, at least do the basics to generate a valid pipeline
|
|
if [ -z "${do_defconfigs}" \
|
|
-a -z "${do_runtime}" \
|
|
]
|
|
then
|
|
do_basics=true
|
|
fi
|
|
|
|
if ${do_basics:-false}; then
|
|
for tst in "${basics[@]}"; do
|
|
printf 'check-%s: { extends: .check-%s_base }\n' "${tst}" "${tst}"
|
|
done
|
|
fi
|
|
|
|
if [ -n "${do_defconfigs}" ]; then
|
|
for cfg in "${defconfigs[@]}"; do
|
|
printf '%s%s: { extends: .defconfig_%s }\n' \
|
|
"${cfg}" "${defconfigs_ext}" "${do_defconfigs}"
|
|
done
|
|
fi
|
|
|
|
if ${do_runtime:-false}; then
|
|
printf '%s: { extends: .runtime_test_base }\n' "${runtimes[@]}"
|
|
fi
|
|
}
|
|
|
|
main "${@}"
|