Travis: Add static check for Python black formatting
Also install and use pygmentize to visualize clang-format and black diffs.
This commit is contained in:
parent
4d52761da6
commit
3644036fd3
|
@ -129,9 +129,6 @@ matrix:
|
||||||
|
|
||||||
before_install:
|
before_install:
|
||||||
- eval "${MATRIX_EVAL}"
|
- eval "${MATRIX_EVAL}"
|
||||||
- if [ "$STATIC_CHECKS" = "yes" ]; then
|
|
||||||
unset SCONS_CACHE;
|
|
||||||
fi
|
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then
|
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then
|
||||||
|
@ -150,6 +147,10 @@ install:
|
||||||
./emsdk/emsdk install latest;
|
./emsdk/emsdk install latest;
|
||||||
./emsdk/emsdk activate latest;
|
./emsdk/emsdk activate latest;
|
||||||
fi
|
fi
|
||||||
|
- if [ "$STATIC_CHECKS" = "yes" ]; then
|
||||||
|
unset SCONS_CACHE;
|
||||||
|
pip3 install --user black pygments;
|
||||||
|
fi
|
||||||
|
|
||||||
before_script:
|
before_script:
|
||||||
- if [ "$PLATFORM" = "android" ]; then
|
- if [ "$PLATFORM" = "android" ]; then
|
||||||
|
@ -160,6 +161,7 @@ before_script:
|
||||||
script:
|
script:
|
||||||
- if [ "$STATIC_CHECKS" = "yes" ]; then
|
- if [ "$STATIC_CHECKS" = "yes" ]; then
|
||||||
sh ./misc/travis/clang-format.sh &&
|
sh ./misc/travis/clang-format.sh &&
|
||||||
|
sh ./misc/travis/black-format.sh &&
|
||||||
doc/tools/makerst.py --dry-run doc/classes modules;
|
doc/tools/makerst.py --dry-run doc/classes modules;
|
||||||
else
|
else
|
||||||
scons -j2 CC=$CC CXX=$CXX platform=$PLATFORM tools=$TOOLS target=$TARGET $OPTIONS $EXTRA_ARGS &&
|
scons -j2 CC=$CC CXX=$CXX platform=$PLATFORM tools=$TOOLS target=$TARGET $OPTIONS $EXTRA_ARGS &&
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
BLACK=black
|
||||||
|
BLACK_OPTIONS="-l 120"
|
||||||
|
|
||||||
|
if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
|
||||||
|
# Travis only clones the PR branch and uses its HEAD commit as detached HEAD,
|
||||||
|
# so it's problematic when we want an exact commit range for format checks.
|
||||||
|
# We fetch upstream to ensure that we have the proper references to resolve.
|
||||||
|
# Ideally we would use $TRAVIS_COMMIT_RANGE but it doesn't play well with PR
|
||||||
|
# updates, as it only includes changes since the previous state of the PR.
|
||||||
|
if [ -z "$(git remote | grep upstream)" ]; then
|
||||||
|
git remote add upstream https://github.com/godotengine/godot \
|
||||||
|
--no-tags -f -t $TRAVIS_BRANCH
|
||||||
|
fi
|
||||||
|
RANGE="upstream/$TRAVIS_BRANCH HEAD"
|
||||||
|
else
|
||||||
|
# Test only the last commit, since $TRAVIS_COMMIT_RANGE wouldn't support
|
||||||
|
# force pushes.
|
||||||
|
RANGE=HEAD
|
||||||
|
fi
|
||||||
|
|
||||||
|
FILES=$(git diff-tree --no-commit-id --name-only -r $RANGE | grep -v thirdparty/| grep -E "(SConstruct|SCsub|\.py)$")
|
||||||
|
echo "Checking files:\n$FILES"
|
||||||
|
|
||||||
|
# create a random filename to store our generated patch
|
||||||
|
prefix="static-check-black"
|
||||||
|
suffix="$(date +%s)"
|
||||||
|
patch="/tmp/$prefix-$suffix.patch"
|
||||||
|
|
||||||
|
for file in $FILES; do
|
||||||
|
"$BLACK" "$BLACK_OPTIONS" --diff "$file" | \
|
||||||
|
sed -e "1s|--- |--- a/|" -e "2s|+++ |+++ b/|" >> "$patch"
|
||||||
|
done
|
||||||
|
|
||||||
|
# if no patch has been generated all is ok, clean up the file stub and exit
|
||||||
|
if [ ! -s "$patch" ] ; then
|
||||||
|
printf "Files in this commit comply with the black formatting rules.\n"
|
||||||
|
rm -f "$patch"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# a patch has been created, notify the user and exit
|
||||||
|
printf "\n*** The following differences were found between the code to commit "
|
||||||
|
printf "and the black formatting rules:\n\n"
|
||||||
|
pygmentize -l diff "$patch"
|
||||||
|
printf "\n*** Aborting, please fix your commit(s) with 'git commit --amend' or 'git rebase -i <hash>'\n"
|
||||||
|
exit 1
|
|
@ -8,8 +8,10 @@ if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
|
||||||
# We fetch upstream to ensure that we have the proper references to resolve.
|
# We fetch upstream to ensure that we have the proper references to resolve.
|
||||||
# Ideally we would use $TRAVIS_COMMIT_RANGE but it doesn't play well with PR
|
# Ideally we would use $TRAVIS_COMMIT_RANGE but it doesn't play well with PR
|
||||||
# updates, as it only includes changes since the previous state of the PR.
|
# updates, as it only includes changes since the previous state of the PR.
|
||||||
|
if [ -z "$(git remote | grep upstream)" ]; then
|
||||||
git remote add upstream https://github.com/godotengine/godot \
|
git remote add upstream https://github.com/godotengine/godot \
|
||||||
--no-tags -f -t $TRAVIS_BRANCH
|
--no-tags -f -t $TRAVIS_BRANCH
|
||||||
|
fi
|
||||||
RANGE="upstream/$TRAVIS_BRANCH HEAD"
|
RANGE="upstream/$TRAVIS_BRANCH HEAD"
|
||||||
else
|
else
|
||||||
# Test only the last commit, since $TRAVIS_COMMIT_RANGE wouldn't support
|
# Test only the last commit, since $TRAVIS_COMMIT_RANGE wouldn't support
|
||||||
|
@ -41,6 +43,6 @@ fi
|
||||||
# a patch has been created, notify the user and exit
|
# a patch has been created, notify the user and exit
|
||||||
printf "\n*** The following differences were found between the code to commit "
|
printf "\n*** The following differences were found between the code to commit "
|
||||||
printf "and the clang-format rules:\n\n"
|
printf "and the clang-format rules:\n\n"
|
||||||
cat "$patch"
|
pygmentize -l diff "$patch"
|
||||||
printf "\n*** Aborting, please fix your commit(s) with 'git commit --amend' or 'git rebase -i <hash>'\n"
|
printf "\n*** Aborting, please fix your commit(s) with 'git commit --amend' or 'git rebase -i <hash>'\n"
|
||||||
exit 1
|
exit 1
|
||||||
|
|
Loading…
Reference in New Issue