summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2018-08-21 21:11:27 +0000
committerGerrit Code Review <review@openstack.org>2018-08-21 21:11:27 +0000
commit500a62e7a37b0a137fb2466239d3030b38a506a8 (patch)
treeaa67f841ab8960c087b62b9c5e4d69e78c82c834
parent210f5488d004c7e89cc1ce195580640ec07e02a8 (diff)
parentdbab9ab8c2a0ee08d8259e4934a2799dc07fdbd8 (diff)
downloadoslo-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.py78
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):