-
-
Notifications
You must be signed in to change notification settings - Fork 21.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Travis: Add static check for Python black formatting
Also install and use pygmentize to visualize clang-format and black diffs.
- Loading branch information
Showing
3 changed files
with
58 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters