aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2018-06-28 13:00:54 -0400
committerKevin O'Connor <kevin@koconnor.net>2018-06-28 13:02:55 -0400
commit154397b92ca1964c0581ab4147dbc570d7175681 (patch)
tree95954d27c6aaea5ae0ac4f4eab835e32cc5189e2
parentefb27f095c591a94118aa664f941d12c57ef6a53 (diff)
downloadkutter-154397b92ca1964c0581ab4147dbc570d7175681.tar.gz
kutter-154397b92ca1964c0581ab4147dbc570d7175681.tar.xz
kutter-154397b92ca1964c0581ab4147dbc570d7175681.zip
test: Add a whitespace check to the travis build
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
-rwxr-xr-xscripts/check_whitespace.py59
-rwxr-xr-xscripts/travis-build.sh15
2 files changed, 74 insertions, 0 deletions
diff --git a/scripts/check_whitespace.py b/scripts/check_whitespace.py
new file mode 100755
index 00000000..6f32c24f
--- /dev/null
+++ b/scripts/check_whitespace.py
@@ -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()
diff --git a/scripts/travis-build.sh b/scripts/travis-build.sh
index f65c50f6..866fb8dc 100755
--- a/scripts/travis-build.sh
+++ b/scripts/travis-build.sh
@@ -10,6 +10,21 @@ 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
######################################################################