diff options
author | Zuul <zuul@review.openstack.org> | 2018-08-21 21:11:27 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2018-08-21 21:11:27 +0000 |
commit | 500a62e7a37b0a137fb2466239d3030b38a506a8 (patch) | |
tree | aa67f841ab8960c087b62b9c5e4d69e78c82c834 | |
parent | 210f5488d004c7e89cc1ce195580640ec07e02a8 (diff) | |
parent | dbab9ab8c2a0ee08d8259e4934a2799dc07fdbd8 (diff) | |
download | oslo-log-500a62e7a37b0a137fb2466239d3030b38a506a8.tar.gz |
Merge "rewrite tests to not rely on implementation details of logging module"
-rw-r--r-- | oslo_log/tests/unit/test_log.py | 78 |
1 files changed, 42 insertions, 36 deletions
diff --git a/oslo_log/tests/unit/test_log.py b/oslo_log/tests/unit/test_log.py index 7878525..e5cfc1f 100644 --- a/oslo_log/tests/unit/test_log.py +++ b/oslo_log/tests/unit/test_log.py @@ -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): |