test: Add a whitespace check to the travis build
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
efb27f095c
commit
154397b92c
|
@ -0,0 +1,59 @@
|
|||
#!/usr/bin/env python2
|
||||
# Check files for whitespace problems
|
||||
#
|
||||
# Copyright (C) 2018 Kevin O'Connor <kevin@koconnor.net>
|
||||
#
|
||||
# This file may be distributed under the terms of the GNU GPLv3 license.
|
||||
import sys, os.path
|
||||
|
||||
HaveError = False
|
||||
|
||||
def report_error(filename, lineno, msg):
|
||||
global HaveError
|
||||
HaveError = True
|
||||
sys.stderr.write("Whitespace error in file %s on line %d: %s\n" % (
|
||||
filename, lineno + 1, msg))
|
||||
|
||||
def check_file(filename):
|
||||
# Open and read file
|
||||
try:
|
||||
f = open(filename, 'rb')
|
||||
data = f.read()
|
||||
f.close()
|
||||
except IOError:
|
||||
return
|
||||
if not data:
|
||||
# Empty files are okay
|
||||
return
|
||||
# Do checks
|
||||
lineno = 0
|
||||
for lineno, line in enumerate(data.split('\n')):
|
||||
# Check for control characters
|
||||
for c in line:
|
||||
oc = ord(c)
|
||||
if oc < 32:
|
||||
char_name = repr(c)
|
||||
if oc == 9:
|
||||
if os.path.basename(filename).lower() == 'makefile':
|
||||
continue
|
||||
char_name = 'tab'
|
||||
report_error(filename, lineno, "Invalid %s character" % (
|
||||
char_name,))
|
||||
break
|
||||
# Check for trailing space
|
||||
if line.endswith(' '):
|
||||
report_error(filename, lineno, "Trailing space")
|
||||
if not data.endswith('\n'):
|
||||
report_error(filename, lineno, "No newline at end of file")
|
||||
if data.endswith('\n\n'):
|
||||
report_error(filename, lineno, "Extra newlines at end of file")
|
||||
|
||||
def main():
|
||||
files = sys.argv[1:]
|
||||
for filename in files:
|
||||
check_file(filename)
|
||||
if HaveError:
|
||||
sys.exit(-1)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
|
@ -9,6 +9,21 @@ export PATH=${PWD}/gcc-arm-none-eabi-7-2017-q4-major/bin:${PATH}
|
|||
PYTHON=${PWD}/python-env/bin/python
|
||||
|
||||
|
||||
######################################################################
|
||||
# Check for whitespace errors
|
||||
######################################################################
|
||||
|
||||
echo "travis_fold:start:check_whitespace"
|
||||
echo "=============== Check whitespace"
|
||||
WS_DIRS="src/ config/ klippy/ scripts/"
|
||||
WS_EXCLUDE="-path src/lib -prune -o -path scripts/kconfig -prune"
|
||||
WS_FILES="-o -name '*.[csh]' -o -name '*.py' -o -name '*.sh'"
|
||||
WS_FILES="$WS_FILES -o -name '*.md' -o -name '*.cfg'"
|
||||
WS_FILES="$WS_FILES -o -iname 'Makefile' -o -iname 'Kconfig'"
|
||||
eval find $WS_DIRS $WS_EXCLUDE $WS_FILES | xargs ./scripts/check_whitespace.py
|
||||
echo "travis_fold:end:check_whitespace"
|
||||
|
||||
|
||||
######################################################################
|
||||
# Run compile tests for several different MCU types
|
||||
######################################################################
|
||||
|
|
Loading…
Reference in New Issue