diff options
author | Martin Liska <mliska@suse.cz> | 2018-11-19 09:08:28 +0100 |
---|---|---|
committer | Martin Liska <marxin@gcc.gnu.org> | 2018-11-19 08:08:28 +0000 |
commit | ca44d7f40afa39b40cfa2ac85521a65d1743ef7a (patch) | |
tree | 27d3d936bfcef596eba6eeb87c09cc6cf26bbf89 /contrib | |
parent | 662076c9faa2a712196faa766482c79632091828 (diff) |
Detect mixed usage of spaces and tabs.
2018-11-19 Martin Liska <mliska@suse.cz>
* check_GNU_style_lib.py: Detect mixed usage
of spaces and tabs.
From-SVN: r266261
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/ChangeLog | 5 | ||||
-rwxr-xr-x | contrib/check_GNU_style_lib.py | 29 |
2 files changed, 33 insertions, 1 deletions
diff --git a/contrib/ChangeLog b/contrib/ChangeLog index 8984c1901e2..64dcdfcb76a 100644 --- a/contrib/ChangeLog +++ b/contrib/ChangeLog @@ -1,3 +1,8 @@ +2018-11-19 Martin Liska <mliska@suse.cz> + + * check_GNU_style_lib.py: Detect mixed usage + of spaces and tabs. + 2018-11-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> * gcc_update (files_and_dependencies): Handle libphobos. diff --git a/contrib/check_GNU_style_lib.py b/contrib/check_GNU_style_lib.py index 63d0538aa57..ac3682fb2af 100755 --- a/contrib/check_GNU_style_lib.py +++ b/contrib/check_GNU_style_lib.py @@ -99,6 +99,18 @@ class SpacesCheck: line.replace(self.expanded_tab, error_string(ws_char * ts)), 'blocks of 8 spaces should be replaced with tabs', i) +class SpacesAndTabsMixedCheck: + def __init__(self): + self.re = re.compile('\ \t') + + def check(self, filename, lineno, line): + stripped = line.lstrip() + start = line[:len(line) - len(stripped)] + if self.re.search(line): + return CheckError(filename, lineno, + error_string(start.replace('\t', ws_char * ts)) + line[len(start):], + 'a space should not precede a tab', 0) + class TrailingWhitespaceCheck: def __init__(self): self.re = re.compile('(\s+)$') @@ -236,12 +248,27 @@ class TrailingWhitespaceTest(unittest.TestCase): r = self.check.check('foo', 123, 'a = 123;\t') self.assertIsNotNone(r) +class SpacesAndTabsMixedTest(unittest.TestCase): + def setUp(self): + self.check = SpacesAndTabsMixedCheck() + + def test_trailing_whitespace_check_basic(self): + r = self.check.check('foo', 123, ' \ta = 123;') + self.assertEqual('foo', r.filename) + self.assertEqual(0, r.column) + self.assertIsNotNone(r.console_error) + r = self.check.check('foo', 123, ' \t a = 123;') + self.assertIsNotNone(r.console_error) + r = self.check.check('foo', 123, '\t a = 123;') + self.assertIsNone(r) + def check_GNU_style_file(file, file_encoding, format): checks = [LineLengthCheck(), SpacesCheck(), TrailingWhitespaceCheck(), SentenceSeparatorCheck(), SentenceEndOfCommentCheck(), SentenceDotEndCheck(), FunctionParenthesisCheck(), SquareBracketCheck(), ClosingParenthesisCheck(), - BracesOnSeparateLineCheck(), TrailinigOperatorCheck()] + BracesOnSeparateLineCheck(), TrailinigOperatorCheck(), + SpacesAndTabsMixedCheck()] errors = [] patch = PatchSet(file, encoding=file_encoding) |