diff --git a/.ci/mypy.sh b/.ci/mypy.sh new file mode 100755 index 000000000..ab55a907e --- /dev/null +++ b/.ci/mypy.sh @@ -0,0 +1,16 @@ +#!/bin/sh -e +# Description: static type checking for python scripts +# https://postmarketos.org/pmb-ci + +if [ "$(id -u)" = 0 ]; then + set -x + apk -q add py3-argcomplete py3-pip py3-pytest + exec su "${TESTUSER:-build}" -c "sh -e $0" +fi + +set -x + +pip install --break-system-packages --no-warn-script-location mypy +# Need to change directory for pyproject.toml to be picked up. +cd .ci +python -m mypy . diff --git a/.ci/pyproject.toml b/.ci/pyproject.toml new file mode 100644 index 000000000..4f2ddc945 --- /dev/null +++ b/.ci/pyproject.toml @@ -0,0 +1,2 @@ +[tool.mypy] +disable_error_code = ["import-not-found"] diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index da6c40fc7..299fb0c74 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -62,6 +62,18 @@ ruff: - .ci/lib/gitlab_prepare_ci.sh - .ci/ruff.sh +# testcases typechecking +mypy: + stage: lint + rules: + - if: *mr_rule + changes: + - .ci/**/* + - .gitlab-ci.yml + script: + - .ci/lib/gitlab_prepare_ci.sh + - .ci/mypy.sh + # shellcheck and various grep checks shellcheck-grep: stage: lint