Commit ca44d7f4 by Martin Liska Committed by Martin Liska

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
parent 662076c9
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> 2018-11-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* gcc_update (files_and_dependencies): Handle libphobos. * gcc_update (files_and_dependencies): Handle libphobos.
......
...@@ -99,6 +99,18 @@ class SpacesCheck: ...@@ -99,6 +99,18 @@ class SpacesCheck:
line.replace(self.expanded_tab, error_string(ws_char * ts)), line.replace(self.expanded_tab, error_string(ws_char * ts)),
'blocks of 8 spaces should be replaced with tabs', i) '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: class TrailingWhitespaceCheck:
def __init__(self): def __init__(self):
self.re = re.compile('(\s+)$') self.re = re.compile('(\s+)$')
...@@ -236,12 +248,27 @@ class TrailingWhitespaceTest(unittest.TestCase): ...@@ -236,12 +248,27 @@ class TrailingWhitespaceTest(unittest.TestCase):
r = self.check.check('foo', 123, 'a = 123;\t') r = self.check.check('foo', 123, 'a = 123;\t')
self.assertIsNotNone(r) 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): def check_GNU_style_file(file, file_encoding, format):
checks = [LineLengthCheck(), SpacesCheck(), TrailingWhitespaceCheck(), checks = [LineLengthCheck(), SpacesCheck(), TrailingWhitespaceCheck(),
SentenceSeparatorCheck(), SentenceEndOfCommentCheck(), SentenceSeparatorCheck(), SentenceEndOfCommentCheck(),
SentenceDotEndCheck(), FunctionParenthesisCheck(), SentenceDotEndCheck(), FunctionParenthesisCheck(),
SquareBracketCheck(), ClosingParenthesisCheck(), SquareBracketCheck(), ClosingParenthesisCheck(),
BracesOnSeparateLineCheck(), TrailinigOperatorCheck()] BracesOnSeparateLineCheck(), TrailinigOperatorCheck(),
SpacesAndTabsMixedCheck()]
errors = [] errors = []
patch = PatchSet(file, encoding=file_encoding) patch = PatchSet(file, encoding=file_encoding)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment