#!/bin/bash -eu sources="$AUTOPKGTEST_TMP/sources" { # Check Python modules under debian/lib and Python scripts under # debian/bin or debian/rules.d. find debian/lib/python -name '*.py' find debian/bin debian/rules.d -type f -perm /111 | while read script; do # Check for Python shebang on the first line only if awk '/^#!.*python/ { exit 0 } { exit 1 }' "$script"; then echo "$script" fi done } > "$sources" # autopkgtest checks for a non-zero exit code *or* any output to # stderr. So we should continue after a failure, but make sure # something is written to stderr. echo "I: Running pycodestyle..." # Ignore E126,E226,W503 (ignored by default) and also E127,W291 which # give false positives. if ! xargs pycodestyle --max-line-length=100 --ignore E126,E127,E226,W291,W503 < "$sources"; then # pycodestyle only writes to stdout echo >&2 "E: pycodestyle detected problems" fi echo "I: Running pyflakes..." if ! xargs pyflakes3 < "$sources"; then # pyflakes only writes to stdout echo >&2 "E: pyflakes detected problems" fi echo "I: Running debian_linux.debian unit tests..." # unittest only writes to stderr if ! PYTHONPATH=debian/lib/python python3 -m debian_linux.debian 2>&1; then echo >&2 "E: some unit tests failed" fi