HACKING: fix edge case with log hints

A log message with _() was not raised as an error, for example:
LOG.info(_('who let the dogs out!')).

This should be:
LOG.info(_LI('who who who who!'))

Change-Id: I040f01b19ff5de00467b80be7399b998534d9a57
Closes-bug: #1522054
This commit is contained in:
Gary Kotton 2015-12-02 06:52:25 -08:00
parent 5b804251ac
commit 0ce4510b35
3 changed files with 8 additions and 1 deletions

View File

@ -30,6 +30,9 @@ import six
# neutron/tests/unit/hacking/test_checks.py
_all_log_levels = {
'reserved': '_', # this should never be used with a log unless
# it is a variable used for a log message and
# a exception
'error': '_LE',
'info': '_LI',
'warn': '_LW',

View File

@ -18,6 +18,7 @@ from pecan import hooks
import webob.exc
from neutron.api.v2 import base as v2base
from neutron.i18n import _LE
LOG = logging.getLogger(__name__)
@ -33,6 +34,6 @@ class ExceptionTranslationHook(hooks.PecanHook):
raise to_class(getattr(e, 'msg', e.message))
# leaked unexpected exception, convert to boring old 500 error and
# hide message from user in case it contained sensitive details
LOG.exception(_("An unexpected exception was caught: %s") % e)
LOG.exception(_LE("An unexpected exception was caught: %s"), e)
raise webob.exc.HTTPInternalServerError(
_("An unexpected internal error occurred."))

View File

@ -39,6 +39,9 @@ class HackingTestCase(base.BaseTestCase):
self.assertEqual(
0, len(list(checks.validate_log_translations(debug, debug, 'f'))))
for log in logs:
bad = 'LOG.%s(_("Bad"))' % log
self.assertEqual(
1, len(list(checks.validate_log_translations(bad, bad, 'f'))))
bad = 'LOG.%s("Bad")' % log
self.assertEqual(
1, len(list(checks.validate_log_translations(bad, bad, 'f'))))