Merge pull request #3301 from ankostis/caplog_clear_text
Fix #3297 where caplog.clear() did not clear text, just records
This commit is contained in:
commit
2612d967f8
1
AUTHORS
1
AUTHORS
|
@ -105,6 +105,7 @@ Kale Kundert
|
||||||
Katarzyna Jachim
|
Katarzyna Jachim
|
||||||
Kevin Cox
|
Kevin Cox
|
||||||
Kodi B. Arfer
|
Kodi B. Arfer
|
||||||
|
Kostis Anagnostopoulos
|
||||||
Lawrence Mitchell
|
Lawrence Mitchell
|
||||||
Lee Kamentsky
|
Lee Kamentsky
|
||||||
Lev Maximov
|
Lev Maximov
|
||||||
|
|
|
@ -176,6 +176,10 @@ class LogCaptureHandler(logging.StreamHandler):
|
||||||
self.records.append(record)
|
self.records.append(record)
|
||||||
logging.StreamHandler.emit(self, record)
|
logging.StreamHandler.emit(self, record)
|
||||||
|
|
||||||
|
def reset(self):
|
||||||
|
self.records = []
|
||||||
|
self.stream = py.io.TextIO()
|
||||||
|
|
||||||
|
|
||||||
class LogCaptureFixture(object):
|
class LogCaptureFixture(object):
|
||||||
"""Provides access and control of log capturing."""
|
"""Provides access and control of log capturing."""
|
||||||
|
@ -197,6 +201,9 @@ class LogCaptureFixture(object):
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def handler(self):
|
def handler(self):
|
||||||
|
"""
|
||||||
|
:rtype: LogCaptureHandler
|
||||||
|
"""
|
||||||
return self._item.catch_log_handler
|
return self._item.catch_log_handler
|
||||||
|
|
||||||
def get_records(self, when):
|
def get_records(self, when):
|
||||||
|
@ -239,8 +246,8 @@ class LogCaptureFixture(object):
|
||||||
return [(r.name, r.levelno, r.getMessage()) for r in self.records]
|
return [(r.name, r.levelno, r.getMessage()) for r in self.records]
|
||||||
|
|
||||||
def clear(self):
|
def clear(self):
|
||||||
"""Reset the list of log records."""
|
"""Reset the list of log records and the captured log text."""
|
||||||
self.handler.records = []
|
self.handler.reset()
|
||||||
|
|
||||||
def set_level(self, level, logger=None):
|
def set_level(self, level, logger=None):
|
||||||
"""Sets the level for capturing of logs. The level will be restored to its previous value at the end of
|
"""Sets the level for capturing of logs. The level will be restored to its previous value at the end of
|
||||||
|
@ -285,6 +292,8 @@ def caplog(request):
|
||||||
* caplog.text() -> string containing formatted log output
|
* caplog.text() -> string containing formatted log output
|
||||||
* caplog.records() -> list of logging.LogRecord instances
|
* caplog.records() -> list of logging.LogRecord instances
|
||||||
* caplog.record_tuples() -> list of (logger_name, level, message) tuples
|
* caplog.record_tuples() -> list of (logger_name, level, message) tuples
|
||||||
|
* caplog.clear() -> clear captured records and formatted log output
|
||||||
|
string
|
||||||
"""
|
"""
|
||||||
result = LogCaptureFixture(request.node)
|
result = LogCaptureFixture(request.node)
|
||||||
yield result
|
yield result
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
Fixed ``clear()`` method on ``caplog`` fixture which cleared ``records``,
|
||||||
|
but not the ``text`` property.
|
|
@ -95,8 +95,10 @@ def test_clear(caplog):
|
||||||
caplog.set_level(logging.INFO)
|
caplog.set_level(logging.INFO)
|
||||||
logger.info(u'bū')
|
logger.info(u'bū')
|
||||||
assert len(caplog.records)
|
assert len(caplog.records)
|
||||||
|
assert caplog.text
|
||||||
caplog.clear()
|
caplog.clear()
|
||||||
assert not len(caplog.records)
|
assert not len(caplog.records)
|
||||||
|
assert not caplog.text
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
|
|
Loading…
Reference in New Issue