gcc/utils/linting/check.sh
2023-11-02 15:15:30 +01:00

60 lines
2.1 KiB
Bash
Executable file

#!/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