glib/tests/flake8.sh

29 lines
760 B
Bash
Raw Normal View History

Incorporate some lint checks into `meson test` This will make it easier and more obvious for developers to run them locally: I'm sure I'm not the only developer who had assumed that `.gitlab-ci/` is private to the CI environment and inappropriate (or perhaps even destructive) to run on a developer/user system. The lint checks are automatically skipped (with TAP SKIP syntax) if we are not in a git checkout, or if git or the lint tool is missing. They can also be disabled explicitly with `meson test --no-suite=lint`, which downstream distributions will probably want to do. By default, most lint checks are reported as an "expected failure" (with TAP TODO syntax) rather than a hard failure, because they do not indicate a functional problem with GLib and there is a tendency for lint tools to introduce additional checks or become more strict over time. Developers can override this by configuring with `-Dwerror=true` (which also makes compiler warnings into fatal errors), or by running the test suite like `LINT_WARNINGS_ARE_ERRORS=1 meson test --suite=lint`. One exception to this is tests/check-missing-install-tag.py, which is checking a functionally significant feature of our build system, and seems like it is unlikely to have false positives: if that one fails, it is reported as a hard failure. run-style-check-diff.sh and run-check-todos.sh are not currently given this treatment, because they require search-common-ancestor.sh, which uses Gitlab-CI-specific information to find out which commits are in-scope for checking. Signed-off-by: Simon McVittie <smcv@collabora.com>
2024-02-07 13:16:22 +01:00
#!/usr/bin/env bash
# Copyright 2020 Frederic Martinsons
# Copyright 2020 Endless OS Foundation, LLC
# Copyright 2024 Collabora Ltd.
# SPDX-License-Identifier: LGPL-2.1-or-later
set -eu
if [ -z "${G_TEST_SRCDIR-}" ]; then
me="$(readlink -f "$0")"
G_TEST_SRCDIR="${me%/*}"
fi
export TEST_NAME=flake8
export TEST_REQUIRES_TOOLS="flake8 git"
run_lint () {
# Disable formatting warnings in flake8, as we use `black` to handle that.
local formatting_warnings=E101,E111,E114,E115,E116,E117,E12,E13,E2,E3,E401,E5,E70,W1,W2,W3,W5
# shellcheck disable=SC2046
flake8 \
--max-line-length=88 --ignore="$formatting_warnings" \
$(git ls-files '*.py')
}
# shellcheck source=tests/lint-common.sh
. "$G_TEST_SRCDIR/lint-common.sh"