mirror of
https://github.com/kk7ds/chirp
synced 2026-08-13 17:51:36 -04:00
This adds tools/checkpatch.sh which checks a given HG revision for style compliance. We should call this as part of our tests, have Jenkins call it, and keep it full of things we'd like to enforce. Developers should run this on their patches (when possible) before submitting. Had this idea after the patch for #1277
69 lines
1.3 KiB
Bash
Executable file
69 lines
1.3 KiB
Bash
Executable file
#!/bin/bash
|
|
#
|
|
# CHIRP coding standards compliance script
|
|
#
|
|
# To add a test to this file, create a new check_foo() function
|
|
# and then add it to the list of TESTS= below
|
|
#
|
|
|
|
TESTS="check_long_lines check_bug_number check_commit_message_line_length"
|
|
|
|
function check_long_lines() {
|
|
local rev="$1"
|
|
local files="$2"
|
|
|
|
if [ -z "$files" ]; then
|
|
return
|
|
fi
|
|
pep8 --select=E501 $files || \
|
|
error "Please use <80 columns in source files"
|
|
}
|
|
|
|
function check_bug_number() {
|
|
local rev="$1"
|
|
hg log -vr $rev | grep -qE '#[0-9]+' || \
|
|
error "A bug number is required like #123"
|
|
|
|
}
|
|
|
|
function _less_than_80() {
|
|
while true; do
|
|
read line
|
|
if [ -z "$line" ]; then
|
|
break
|
|
elif [ $(echo $line | wc -c) -ge 80 ]; then
|
|
return 1
|
|
fi
|
|
done
|
|
}
|
|
|
|
function check_commit_message_line_length() {
|
|
local rev="$1"
|
|
hg log -vr $rev | (_less_than_80) || \
|
|
error "Please keep commit message lines to <80 columns"
|
|
}
|
|
|
|
# --- END OF TEST FUNCTIONS ---
|
|
|
|
function error() {
|
|
echo FAIL: $*
|
|
ERROR=1
|
|
}
|
|
|
|
function get_touched_files() {
|
|
local rev="$1"
|
|
hg status -n --change $rev | grep '\.py$'
|
|
}
|
|
|
|
files=$(get_touched_files tip)
|
|
rev=${1:-tip}
|
|
|
|
for testname in $TESTS; do
|
|
eval "$testname $rev \"$files\""
|
|
done
|
|
|
|
if [ -z "$ERROR" ]; then
|
|
echo "Patch '${rev}' is OK"
|
|
else
|
|
exit 1
|
|
fi
|