diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2018-06-28 13:00:54 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2018-06-28 13:02:55 -0400 |
commit | 154397b92ca1964c0581ab4147dbc570d7175681 (patch) | |
tree | 95954d27c6aaea5ae0ac4f4eab835e32cc5189e2 /scripts/check_whitespace.py | |
parent | efb27f095c591a94118aa664f941d12c57ef6a53 (diff) | |
download | kutter-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>
Diffstat (limited to 'scripts/check_whitespace.py')
-rwxr-xr-x | scripts/check_whitespace.py | 59 |
1 files changed, 59 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() |