diff options
Diffstat (limited to 'nose/plugins/capture.py')
-rw-r--r-- | nose/plugins/capture.py | 27 |
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 <<')]) |