#!/usr/bin/env bash # For now, just a "manual" helper. # TODO: Automate. See e.g. https://src.fedoraproject.org/tests/binutils RETVAL=0 PRE_COMMIT_YAML=$(realpath "${0%/*}"/pre-commit.yaml) cd "${0%/*}"/../.. || exit 1 DELIMITER='==============================================================================' echo -e "\n${DELIMITER}\nRunning tmt lint ..." tmt lint --failed-only --outcome-only=fail --outcome-only=warn || RETVAL=1 echo "$DELIMITER" echo -e "\n${DELIMITER}\nRunning yamllint ..." find . -name '*.fmf' -exec yamllint -d '{extends: default, rules: {document-start: disable, line-length: disable}}' {} + || RETVAL=1 echo "$DELIMITER" echo -e "\n${DELIMITER}\nRunning pre-commit with -c $PRE_COMMIT_YAML ..." pre-commit run --all-files -c "$PRE_COMMIT_YAML" --all-files || RETVAL=1 echo "$DELIMITER" echo -e "\n${DELIMITER}\nRunning ShellCheck ..." find . -path ./helpers/schedulers -prune -o -type f -name '*.sh' -exec shellcheck --norc --exclude=SC1091 {} + || RETVAL=1 echo "$DELIMITER" echo -e "\n${DELIMITER}\nChecking WITH_SCL in tests' main.fmf ..." # shellcheck disable=SC2044 for i in $(find . -name main.fmf); do if grep -q '^test:.*runtest\.sh' "$i"; then # shellcheck disable=SC2016 if ! grep -qF 'test: ${WITH_SCL:-bash} ./runtest.sh' "$i"; then echo "$i does not use WITH_SCL in 'test:'" RETVAL=1 fi fi done echo "$DELIMITER" echo -e "\n${DELIMITER}\nChecking direct usage of dnf/yum/rpm-ostree instead of pkgmgr_install ..." # shellcheck disable=SC2044 for i in $(find . \( -path ./tests/lib -o -path ./utils -o -path ./plans \) -prune -o -type f -name '*.sh' -print); do # Check uncommented occurrences. The implementation is far # from correct but will do for a start. # FIXME if grep -q '^[^#]*rpm-ostree' "$i"; then echo "$i suspected of using rpm-ostree" RETVAL=1 fi if grep -qE '^[^#]*(dnf|yum).* .*install' "$i"; then echo "$i suspected of using dnf/yum install" RETVAL=1 fi done echo "$DELIMITER" echo -en "\nOVERALL RESULT: " [[ "$RETVAL" -eq 0 ]] && echo PASS || echo FAIL exit $RETVAL