summaryrefslogtreecommitdiff
path: root/nose/plugins
diff options
context:
space:
mode:
authorSanteri Paavolainen <santeri.paavolainen@codento.com>2012-09-30 06:54:31 +0300
committerSanteri Paavolainen <santeri.paavolainen@codento.com>2012-09-30 06:54:31 +0300
commit511ad18ea343238053208313a411392380f1a12b (patch)
tree65144cb4cf8e59fad9859787aa62a53ed4d07adf /nose/plugins
parent908b2cda43eff9ab7a5045b6f6dfe3a718fb9afd (diff)
downloadnose-511ad18ea343238053208313a411392380f1a12b.tar.gz
Format captured log records immediately to have consistent formatting of mutables.
This is a fix for https://github.com/nose-devs/nose/issues/561
Diffstat (limited to 'nose/plugins')
-rw-r--r--nose/plugins/logcapture.py16
1 files changed, 9 insertions, 7 deletions
diff --git a/nose/plugins/logcapture.py b/nose/plugins/logcapture.py
index 9dba58f..30b4a96 100644
--- a/nose/plugins/logcapture.py
+++ b/nose/plugins/logcapture.py
@@ -16,7 +16,7 @@ You can remove other installed logging handlers with the
"""
import logging
-from logging.handlers import BufferingHandler
+from logging import Handler
import threading
from nose.plugins.base import Plugin
@@ -71,12 +71,15 @@ class FilterSet(object):
return self._any_match(self.exclusive, record)
-class MyMemoryHandler(BufferingHandler):
- def __init__(self, capacity, logformat, logdatefmt, filters):
- BufferingHandler.__init__(self, capacity)
+class MyMemoryHandler(Handler):
+ def __init__(self, logformat, logdatefmt, filters):
+ Handler.__init__(self)
fmt = logging.Formatter(logformat, logdatefmt)
self.setFormatter(fmt)
self.filterset = FilterSet(filters)
+ self.buffer = []
+ def emit(self, record):
+ self.buffer.append(self.format(record))
def flush(self):
pass # do nothing
def truncate(self):
@@ -200,7 +203,7 @@ class LogCapture(Plugin):
self.start()
def start(self):
- self.handler = MyMemoryHandler(1000, self.logformat, self.logdatefmt,
+ self.handler = MyMemoryHandler(self.logformat, self.logdatefmt,
self.filters)
self.setupLoghandler()
@@ -233,8 +236,7 @@ class LogCapture(Plugin):
return (ec, self.addCaptureToErr(ev, records), tb)
def formatLogRecords(self):
- format = self.handler.format
- return [safe_str(format(r)) for r in self.handler.buffer]
+ return map(safe_str, self.handler.buffer)
def addCaptureToErr(self, ev, records):
return '\n'.join([safe_str(ev), ln('>> begin captured logging <<')] + \