#!/usr/bin/env bash set -e set -u exit_code=0 docker_flags=(--rm -v "$PWD:/testplugin" -v "$PWD/test:/home" -w /testplugin "$DOCKER_RUN_IMAGE") echo '========================================' echo 'Running custom linting rules' echo '========================================' echo 'Custom warnings/errors follow:' echo set -o pipefail docker run -a stdout "${docker_flags[@]}" test/script/custom-linting-rules . || exit_code=$? set +o pipefail echo echo '========================================' echo 'Checking for duplicate tags' echo '========================================' echo 'Duplicate tags follow:' echo grep --exclude=tags -roh '\*.*\*$' doc | sort | uniq -d || exit_code=$? echo '========================================' echo 'Checking for invalid tag references' echo '========================================' echo 'Invalid tag references tags follow:' echo tag_regex='[gb]\?:\?\(ale\|ALE\)[a-zA-Z_\-]\+' # Grep for tags and references, and complain if we find a reference without # a tag for the reference. Only our tags will be included. diff -u \ <(grep --exclude=tags -roh "\*$tag_regex\*" doc | sort -u | sed 's/*//g') \ <(grep --exclude=tags -roh "|$tag_regex|" doc | sort -u | sed 's/|//g') \ | grep '^+[^+]' && exit_code=1 echo '========================================' echo 'diff README.md and doc/ale.txt tables' echo '========================================' echo 'Differences follow:' echo test/script/check-supported-tools-tables || exit_code=$? echo '========================================' echo 'Look for badly aligned doc tags' echo '========================================' echo 'Badly aligned tags follow:' echo # Documentation tags need to be aligned to the right margin, so look for # tags which aren't at the right margin. grep ' \*[^*]\+\*$' doc/ -r \ | awk '{ sep = index($0, ":"); if (length(substr($0, sep + 1 )) < 79) { print } }' \ | grep . && exit_code=1 echo '========================================' echo 'Look for table of contents issues' echo '========================================' echo test/script/check-toc || exit_code=$? echo '========================================' echo 'Check Python code' echo '========================================' echo docker run --rm -v "$PWD:/testplugin" "$DOCKER_RUN_IMAGE" \ python -W ignore -m unittest discover /testplugin/test/python \ || exit_code=$? echo exit $exit_code