mirror of https://github.com/django/django.git
[2.1.x] Restored django.test.utils.patch_logger() for backwards compatibility.
Added back after607970f31c
. Backport of8dcd43ce06
from master
This commit is contained in:
parent
add57c7e27
commit
a7cdf7aafc
|
@ -634,6 +634,29 @@ class ignore_warnings(TestContextDecorator):
|
|||
self.catch_warnings.__exit__(*sys.exc_info())
|
||||
|
||||
|
||||
@contextmanager
|
||||
def patch_logger(logger_name, log_level, log_kwargs=False):
|
||||
"""
|
||||
Context manager that takes a named logger and the logging level
|
||||
and provides a simple mock-like list of messages received.
|
||||
|
||||
Use unitttest.assertLogs() if you only need Python 3 support. This
|
||||
private API will be removed after Python 2 EOL in 2020 (#27753).
|
||||
"""
|
||||
calls = []
|
||||
|
||||
def replacement(msg, *args, **kwargs):
|
||||
call = msg % args
|
||||
calls.append((call, kwargs) if log_kwargs else call)
|
||||
logger = logging.getLogger(logger_name)
|
||||
orig = getattr(logger, log_level)
|
||||
setattr(logger, log_level, replacement)
|
||||
try:
|
||||
yield calls
|
||||
finally:
|
||||
setattr(logger, log_level, orig)
|
||||
|
||||
|
||||
# On OSes that don't provide tzset (Windows), we can't set the timezone
|
||||
# in which the program runs. As a consequence, we must skip tests that
|
||||
# don't enforce a specific timezone (with timezone.override or equivalent),
|
||||
|
|
Loading…
Reference in New Issue