Merge "rewrite tests to not rely on implementation details of logging module"

This commit is contained in:
Zuul 2018-08-21 21:11:27 +00:00 committed by Gerrit Code Review
commit 500a62e7a3
1 changed files with 42 additions and 36 deletions

View File

@ -1702,6 +1702,20 @@ class LogConfigTestCase(BaseTestCase):
disable_existing_loggers=False)
class SavingAdapter(log.KeywordArgumentAdapter):
def __init__(self, *args, **kwds):
super(log.KeywordArgumentAdapter, self).__init__(*args, **kwds)
self.results = []
def process(self, msg, kwargs):
# Run the real adapter and save the inputs and outputs
# before returning them so the test can examine both.
results = super(SavingAdapter, self).process(msg, kwargs)
self.results.append((msg, kwargs, results))
return results
class KeywordArgumentAdapterTestCase(BaseTestCase):
def setUp(self):
@ -1754,52 +1768,44 @@ class KeywordArgumentAdapterTestCase(BaseTestCase):
kwargs)
def test_pass_args_to_log(self):
a = log.KeywordArgumentAdapter(self.mock_log, {})
a = SavingAdapter(self.mock_log, {})
message = 'message'
exc_message = 'exception'
key = 'name'
val = 'value'
a.log(logging.DEBUG, message, name=val, exc_info=exc_message)
if six.PY3:
self.mock_log._log.assert_called_once_with(
logging.DEBUG,
message,
(),
extra={key: val, 'extra_keys': [key]},
exc_info=exc_message
)
else:
self.mock_log.log.assert_called_once_with(
logging.DEBUG,
message,
extra={key: val, 'extra_keys': [key]},
exc_info=exc_message
)
expected = {
'exc_info': exc_message,
'extra': {'name': val, 'extra_keys': ['name']},
}
actual = a.results[0]
self.assertEqual(message, actual[0])
self.assertEqual(expected, actual[1])
results = actual[2]
self.assertEqual(message, results[0])
self.assertEqual(expected, results[1])
def test_pass_args_via_debug(self):
a = log.KeywordArgumentAdapter(self.mock_log, {})
a = SavingAdapter(self.mock_log, {})
message = 'message'
exc_message = 'exception'
key = 'name'
val = 'value'
a.debug(message, name=val, exc_info=exc_message)
# The adapter implementation for debug() is different for
# python 3, so we expect a different method to be called
# internally.
if six.PY3:
self.mock_log._log.assert_called_once_with(
logging.DEBUG,
message,
(),
extra={key: val, 'extra_keys': [key]},
exc_info=exc_message
)
else:
self.mock_log.debug.assert_called_once_with(
message,
extra={key: val, 'extra_keys': [key]},
exc_info=exc_message
)
expected = {
'exc_info': exc_message,
'extra': {'name': val, 'extra_keys': ['name']},
}
actual = a.results[0]
self.assertEqual(message, actual[0])
self.assertEqual(expected, actual[1])
results = actual[2]
self.assertEqual(message, results[0])
self.assertEqual(expected, results[1])
class UnicodeConversionTestCase(BaseTestCase):