Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit dd963d4

Browse files
committed
Fix LogCapture to work with "silenced" loggers.
1 parent a371584 commit dd963d4

File tree

2 files changed

+26
-3
lines changed

2 files changed

+26
-3
lines changed

‎src/aspectlib/test.py‎

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1+
import logging
12
from collections import defaultdict
23
from collections import namedtuple
34
from difflib import unified_diff
45
from functools import partial
56
from functools import wraps
67
from inspect import isclass
8+
from logging import _checkLevel
79
from logging import getLevelName
810
from logging import getLogger
911
from sys import _getframe
@@ -116,15 +118,28 @@ def __enter__(self):
116118
self._rollback = weave(
117119
self._logger,
118120
record(callback=self._callback, extended=True, iscalled=True),
119-
methods='_log$'
121+
methods=('debug', 'info', 'warning', 'error', 'exception', 'critical', 'log')
120122
)
121123
return self
122124

123125
def __exit__(self, *exc):
124126
self._rollback()
125127

126-
def _callback(self, _binding, _qualname, args, _kwargs):
127-
level, message, args = args
128+
def _callback(self, _binding, qualname, args, _kwargs):
129+
_, name = qualname.rsplit('.', 1)
130+
131+
if name == 'log':
132+
level, args = _checkLevel(args[0]), args[1:]
133+
elif name == 'exception':
134+
level = logging.ERROR
135+
else:
136+
level = _checkLevel(name.upper())
137+
138+
if len(args) > 1:
139+
message, args = args[0], args[1:]
140+
else:
141+
message, args = args[0], ()
142+
128143
if level >= self._level:
129144
self._calls.append((
130145
message % args if args else message,

‎tests/test_contrib.py‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,18 +105,26 @@ def __repr__(self):
105105
print(i)
106106
assert logcap.messages == [
107107
('ERROR', "__init__((Connection@1, 'to-something'), {}) raised exception Failed. 5 retries left. Sleeping 0 secs."),
108+
('ERROR', "__init__((Connection@1, 'to-something'), {}) raised exception Failed. 5 retries left. Sleeping 0 secs."),
109+
('ERROR', "__init__((Connection@2, 'to-something'), {}) raised exception Failed. 4 retries left. Sleeping 0 secs."),
108110
('ERROR', "__init__((Connection@2, 'to-something'), {}) raised exception Failed. 4 retries left. Sleeping 0 secs."),
109111
('INFO', 'connected!'),
110112
('INFO', 'action!'),
111113
('INFO', 'action!'),
112114
('ERROR', 'action((Connection@6, 2, 2), {}) raised exception Failed. 5 retries left. Sleeping 0 secs.'),
115+
('ERROR', 'action((Connection@6, 2, 2), {}) raised exception Failed. 5 retries left. Sleeping 0 secs.'),
116+
('ERROR', 'action((Connection@7, 2, 2), {}) raised exception Failed. 4 retries left. Sleeping 0 secs.'),
113117
('ERROR', 'action((Connection@7, 2, 2), {}) raised exception Failed. 4 retries left. Sleeping 0 secs.'),
114118
('ERROR', 'action((Connection@8, 2, 2), {}) raised exception Failed. 3 retries left. Sleeping 0 secs.'),
119+
('ERROR', 'action((Connection@8, 2, 2), {}) raised exception Failed. 3 retries left. Sleeping 0 secs.'),
115120
('INFO', 'connected!'),
116121
('INFO', 'action!'),
117122
('INFO', 'action!'),
118123
('ERROR', 'action((Connection@12, 4, 4), {}) raised exception Failed. 5 retries left. Sleeping 0 secs.'),
124+
('ERROR', 'action((Connection@12, 4, 4), {}) raised exception Failed. 5 retries left. Sleeping 0 secs.'),
119125
('ERROR', 'action((Connection@13, 4, 4), {}) raised exception Failed. 4 retries left. Sleeping 0 secs.'),
126+
('ERROR', 'action((Connection@13, 4, 4), {}) raised exception Failed. 4 retries left. Sleeping 0 secs.'),
127+
('ERROR', 'action((Connection@14, 4, 4), {}) raised exception Failed. 3 retries left. Sleeping 0 secs.'),
120128
('ERROR', 'action((Connection@14, 4, 4), {}) raised exception Failed. 3 retries left. Sleeping 0 secs.'),
121129
('INFO', 'connected!'),
122130
('INFO', 'action!'),

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /