Add formatting test workflow

This commit is contained in:
Riku Isokoski 2022-04-30 22:53:34 +03:00 committed by JF
parent dedb397ae0
commit 015f17cd25
2 changed files with 71 additions and 0 deletions

34
.github/workflows/format.yml vendored Normal file
View file

@ -0,0 +1,34 @@
name: Code formatting
on:
pull_request:
branches: [ master, develop ]
jobs:
test-format:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 1000
- name: Configure git
run: |
git config --global user.email "-"
git config --global user.name "Autoformatter"
git fetch origin "$GITHUB_BASE_REF":"$GITHUB_BASE_REF" --depth=1000
- name: Install clang-format
run: |
sudo apt-get update
sudo apt-get -y install clang-format-12
- name: Check formatting
run: tests/test-format.sh "$GITHUB_BASE_REF"
- name: Upload patches
uses: actions/upload-artifact@v3
if: failure()
with:
name: Patches
path: ./*.patch

37
tests/test-format.sh Executable file
View file

@ -0,0 +1,37 @@
#!/bin/sh
set -e
[ -z "$1" ] && exit
basebranch=$1
CHANGED_FILES=$(git diff --name-only "$basebranch"...HEAD)
CHANGED=0
for file in $CHANGED_FILES
do
case "$file" in
*.cpp|*.h)
echo Checking "$file"
clang-format -i "$file"
if ! git diff --quiet "$basebranch"...HEAD
then
printf "\033[31mError:\033[0m Formatting error in %s\n" "$file"
CHANGED=1
git add "$file"
git commit -q -m "Apply clang-format to $(basename "$file")"
printf "Creating patch "
git format-patch HEAD~
fi
esac
done
if [ $CHANGED = 1 ]
then
printf "\033[31mError:\033[0m Issues found. You may use the patches provided as artifacts to format the code."
exit 1
fi
exit 0