aboutgitcodebugslistschat
diff options
context:
space:
mode:
-rwxr-xr-xtest/build/static_checkers.sh24
-rw-r--r--test/lib/exeter10
2 files changed, 27 insertions, 7 deletions
diff --git a/test/build/static_checkers.sh b/test/build/static_checkers.sh
index 228b99a..96679fb 100755
--- a/test/build/static_checkers.sh
+++ b/test/build/static_checkers.sh
@@ -13,18 +13,30 @@
# Copyright Red Hat
# Author: David Gibson <david@gibson.dropbear.id.au>
-. $(dirname $0)/../exeter/sh/exeter.sh
+. $(dirname ${0})/../exeter/sh/exeter.sh
-exeter_register cppcheck make -C .. cppcheck
+# do_check() - Run static checker as a test if the binary is available
+# $1: Static checker (uased as both executable name and make target)
+# $@: Any additional arguments required to make
+do_check() {
+ checker="${1}"
+ shift
+ if ! which "${checker}" >/dev/null 2>/dev/null; then
+ exeter_skip "${checker} not available"
+ fi
+ make "${@}" "${checker}"
+}
+
+exeter_register cppcheck do_check cppcheck -C ..
exeter_set_description cppcheck "passt sources pass cppcheck"
-exeter_register clang_tidy make -C .. clang-tidy
+exeter_register clang_tidy do_check clang-tidy -C ..
exeter_set_description clang_tidy "passt sources pass clang-tidy"
-exeter_register flake8 make flake8
+exeter_register flake8 do_check flake8
exeter_set_description flake8 "passt tests in Python pass flake8"
-exeter_register mypy make mypy
+exeter_register mypy do_check mypy
exeter_set_description mypy "passt tests in Python pass mypy --strict"
-exeter_main "$@"
+exeter_main "${@}"
diff --git a/test/lib/exeter b/test/lib/exeter
index 7ea084a..ccdb19c 100644
--- a/test/lib/exeter
+++ b/test/lib/exeter
@@ -49,7 +49,15 @@ exeter() {
for __testid in $(${EXETOOL} list -- "${@}"); do
__desc="$(${EXETOOL} desc -- "${@}" -- "${__testid}")"
status_test_start "${__desc}"
- context_run host "${*} '${__testid}'" && status_test_ok || status_test_fail
+ status=0
+ context_run host "${*} '${__testid}'" || status="${?}"
+ if [ "${status}" = 0 ]; then
+ status_test_ok
+ elif [ "${status}" = 77 ]; then
+ status_test_skip
+ else
+ status_test_fail
+ fi
done
cd ..