summaryrefslogtreecommitdiff
path: root/nose/plugins/capture.py
diff options
context:
space:
mode:
Diffstat (limited to 'nose/plugins/capture.py')
-rw-r--r--nose/plugins/capture.py27
1 files changed, 3 insertions, 24 deletions
diff --git a/nose/plugins/capture.py b/nose/plugins/capture.py
index 224f0a5..fa4e5dc 100644
--- a/nose/plugins/capture.py
+++ b/nose/plugins/capture.py
@@ -13,6 +13,7 @@ import logging
import os
import sys
from nose.plugins.base import Plugin
+from nose.pyversion import exc_to_unicode, force_unicode
from nose.util import ln
from StringIO import StringIO
@@ -86,30 +87,8 @@ class Capture(Plugin):
return self.formatError(test, err)
def addCaptureToErr(self, ev, output):
- if isinstance(ev, BaseException):
- if hasattr(ev, '__unicode__'):
- # 2.6+
- try:
- ev = unicode(ev)
- except UnicodeDecodeError:
- # We need a unicode string... take our best shot at getting,
- # since we don't know what the original encoding is in.
- ev = str(ev).decode('utf8', 'replace')
- else:
- # 2.5-
- if not hasattr(ev, 'message'):
- # 2.4
- msg = len(ev.args) and ev.args[0] or ''
- else:
- msg = ev.message
- if (isinstance(msg, basestring) and
- not isinstance(msg, unicode)):
- msg = msg.decode('utf8', 'replace')
- ev = u'%s: %s' % (ev.__class__.__name__, msg)
- elif not isinstance(ev, basestring):
- ev = repr(ev)
- if not isinstance(output, unicode):
- output = output.decode('utf8', 'replace')
+ ev = exc_to_unicode(ev)
+ output = force_unicode(output)
return u'\n'.join([ev, ln(u'>> begin captured stdout <<'),
output, ln(u'>> end captured stdout <<')])