diff --git a/HACKING.rst b/HACKING.rst index 256467d2616..edf37a2d34a 100644 --- a/HACKING.rst +++ b/HACKING.rst @@ -12,9 +12,6 @@ Cinder Specific Commandments - [N322] Ensure default arguments are not mutable. - [N323] Add check for explicit import of _() to ensure proper translation. - [N325] str() and unicode() cannot be used on an exception. Remove or use six.text_type(). -- [N328] LOG.info messages require translations `_LI()`. -- [N329] LOG.exception and LOG.error messages require translations `_LE()`. -- [N330] LOG.warning messages require translations `_LW()`. - [N336] Must use a dict comprehension instead of a dict constructor with a sequence of key-value pairs. - [C301] timeutils.utcnow() from oslo_utils should be used instead of datetime.now(). - [C302] six.text_type should be used instead of unicode. diff --git a/cinder/hacking/checks.py b/cinder/hacking/checks.py index 804b54cf145..5d5c3c4bce5 100644 --- a/cinder/hacking/checks.py +++ b/cinder/hacking/checks.py @@ -54,12 +54,6 @@ oslo_namespace_imports = re.compile(r"from[\s]*oslo[.](concurrency|db" "|config|utils|serialization|log)") no_contextlib_nested = re.compile(r"\s*with (contextlib\.)?nested\(") -log_translation_LI = re.compile( - r"(.)*LOG\.(info)\(\s*(_\(|'|\")") -log_translation_LE = re.compile( - r"(.)*LOG\.(exception|error)\(\s*(_\(|'|\")") -log_translation_LW = re.compile( - r"(.)*LOG\.(warning|warn)\(\s*(_\(|'|\")") logging_instance = re.compile( r"(.)*LOG\.(warning|info|debug|error|exception)\(") @@ -366,24 +360,6 @@ class CheckOptRegistrationArgs(BaseASTChecker): return super(CheckOptRegistrationArgs, self).generic_visit(node) -def validate_log_translations(logical_line, filename): - # Translations are not required in the test directory. - # This will not catch all instances of violations, just direct - # misuse of the form LOG.info('Message'). - if "cinder/tests" in filename: - return - msg = "N328: LOG.info messages require translations `_LI()`!" - if log_translation_LI.match(logical_line): - yield (0, msg) - msg = ("N329: LOG.exception and LOG.error messages require " - "translations `_LE()`!") - if log_translation_LE.match(logical_line): - yield (0, msg) - msg = "N330: LOG.warning messages require translations `_LW()`!" - if log_translation_LW.match(logical_line): - yield (0, msg) - - def check_datetime_now(logical_line, noqa): if noqa: return @@ -496,7 +472,6 @@ def factory(register): register(check_datetime_now) register(check_timeutils_strtime) register(check_timeutils_isotime) - register(validate_log_translations) register(check_unicode_usage) register(check_no_print_statements) register(check_no_log_audit) diff --git a/cinder/tests/unit/test_hacking.py b/cinder/tests/unit/test_hacking.py index ddd75fa4561..b63a66fb05c 100644 --- a/cinder/tests/unit/test_hacking.py +++ b/cinder/tests/unit/test_hacking.py @@ -105,7 +105,7 @@ class HackingTestCase(test.TestCase): "msg = _('My message')", "cinder.tests.unit/other_files.py")))) self.assertEqual(0, len(list(checks.check_explicit_underscore_import( - "from cinder.i18n import _LE, _, _LW", + "from cinder.i18n import _", "cinder.tests.unit/other_files2.py")))) self.assertEqual(0, len(list(checks.check_explicit_underscore_import( "msg = _('My message')", @@ -120,9 +120,6 @@ class HackingTestCase(test.TestCase): self.assertEqual(0, len(list(checks.check_explicit_underscore_import( "LOG.info('My info message')", "cinder.tests.unit/other_files4.py")))) - self.assertEqual(0, len(list(checks.check_explicit_underscore_import( - "from cinder.i18n import _LW", - "cinder.tests.unit/other_files5.py")))) self.assertEqual(1, len(list(checks.check_explicit_underscore_import( "msg = _('My message')", "cinder.tests.unit/other_files5.py")))) @@ -310,26 +307,6 @@ class HackingTestCase(test.TestCase): self.assertEqual(0, len(list(checks.check_timeutils_strtime( "strftime")))) - def test_validate_log_translations(self): - self.assertEqual(1, len(list(checks.validate_log_translations( - "LOG.info('foo')", "foo.py")))) - self.assertEqual(1, len(list(checks.validate_log_translations( - "LOG.warning('foo')", "foo.py")))) - self.assertEqual(1, len(list(checks.validate_log_translations( - "LOG.error('foo')", "foo.py")))) - self.assertEqual(1, len(list(checks.validate_log_translations( - "LOG.exception('foo')", "foo.py")))) - self.assertEqual(0, len(list(checks.validate_log_translations( - "LOG.info('foo')", "cinder/tests/foo.py")))) - self.assertEqual(0, len(list(checks.validate_log_translations( - "LOG.info(_LI('foo')", "foo.py")))) - self.assertEqual(0, len(list(checks.validate_log_translations( - "LOG.warning(_LW('foo')", "foo.py")))) - self.assertEqual(0, len(list(checks.validate_log_translations( - "LOG.error(_LE('foo')", "foo.py")))) - self.assertEqual(0, len(list(checks.validate_log_translations( - "LOG.exception(_LE('foo')", "foo.py")))) - def test_check_unicode_usage(self): self.assertEqual(1, len(list(checks.check_unicode_usage( "unicode(msg)", False))))