Merge "Update log translation hacking rule"

This commit is contained in:
Jenkins 2017-07-04 18:00:41 +00:00 committed by Gerrit Code Review
commit 714e77bcad
2 changed files with 21 additions and 33 deletions

View File

@ -41,18 +41,13 @@ asse_equal_end_with_none_re = re.compile(
asse_equal_start_with_none_re = re.compile(
r"(.)*assertEqual\(None, (\w|\.|\'|\"|\[|\])+\)")
unicode_func_re = re.compile(r"(\s|\W|^)unicode\(")
log_translation = re.compile(
r"(.)*LOG\.(audit)\(\s*('|\")")
log_translation_info = re.compile(
r"(.)*LOG\.(info)\(\s*(_\(|'|\")")
log_translation_exception = re.compile(
r"(.)*LOG\.(exception)\(\s*(_\(|'|\")")
log_translation_error = re.compile(
r"(.)*LOG\.(error)\(\s*(_\(|'|\")")
log_translation_critical = re.compile(
r"(.)*LOG\.(critical)\(\s*(_\(|'|\")")
log_translation_warning = re.compile(
r"(.)*LOG\.(warning)\(\s*(_\(|'|\")")
_all_log_levels = {'debug', 'error', 'info', 'warning',
'critical', 'exception'}
# Since _Lx have been removed, we just need to check _()
translated_logs = re.compile(
r"(.)*LOG\.(%(level)s)\(\s*_\(" % {'level': '|'.join(_all_log_levels)})
dict_constructor_with_list_copy_re = re.compile(r".*\bdict\((\[)?(\(|\[)")
@ -86,18 +81,13 @@ def assert_equal_none(logical_line):
"sentences not allowed")
def no_translate_debug_logs(logical_line, filename):
dirs = [
"glare/api",
"glare/cmd",
"glare/common",
"glare/db",
"glare/tests",
]
def no_translate_logs(logical_line):
"""Check for use of LOG.*(_(
if max([name in filename for name in dirs]):
if logical_line.startswith("LOG.debug(_("):
yield(0, "G319: Don't translate debug level logs")
G319
"""
if translated_logs.match(logical_line):
yield (0, "G319: Don't translate logs")
def no_direct_use_of_unicode_function(logical_line):
@ -156,7 +146,7 @@ def factory(register):
register(assert_true_instance)
register(assert_equal_type)
register(assert_equal_none)
register(no_translate_debug_logs)
register(no_translate_logs)
register(no_direct_use_of_unicode_function)
register(check_no_contextlib_nested)
register(dict_constructor_with_list_copy)

View File

@ -44,15 +44,13 @@ class HackingTestCase(base.BaseTestCase):
self.assertEqual(
0, len(list(checks.assert_equal_none("self.assertIsNone()"))))
def test_no_translate_debug_logs(self):
self.assertEqual(1, len(list(checks.no_translate_debug_logs(
"LOG.debug(_('foo'))", "glare/common/foo.py"))))
self.assertEqual(0, len(list(checks.no_translate_debug_logs(
"LOG.debug('foo')", "glare/common/foo.py"))))
self.assertEqual(0, len(list(checks.no_translate_debug_logs(
"LOG.info(_('foo'))", "glare/common/foo.py"))))
def test_no_translate_logs(self):
for log in checks._all_log_levels:
bad = 'LOG.%s(_("Bad"))' % log
self.assertEqual(1, len(list(checks.no_translate_logs(bad))))
# Catch abuses when used with a variable and not a literal
bad = 'LOG.%s(_(msg))' % log
self.assertEqual(1, len(list(checks.no_translate_logs(bad))))
def test_no_direct_use_of_unicode_function(self):
self.assertEqual(1, len(list(checks.no_direct_use_of_unicode_function(