New submission from Lennart Regebro <rege...@gmail.com>:

If we return unicode, SpoofOut's buf variable becomes automagically converted 
to unicode. This means all subsequent output becomes converted to unicode, and 
if the output contains non-ascii characters that fails.

That means that 

    >>> print u'\xe9'.encode('utf-8')
    é

Will work just fine, but

    >>> print u'abc'
    abc

    >>> print u'\xe9'.encode('utf-8')
    é

Will fail.

    
The reason for this is that when "resetting" the doctest output only a 
truncate(0) is done, so the buf variable will continue to be unicode. I include 
tests + a patch that will set self.buf to '' if empty when trunkated. Other 
options are also possible, like changing the .truncate(0) to a .buf = '' but 
that's ugly, or adding a reset() method on SpoofOUt.

----------
components: Extension Modules, Tests
files: doctest_unicode.patch
keywords: patch
messages: 103728
nosy: lregebro
severity: normal
status: open
title: Unicode returns in doctest can make subsequent tests fail
type: behavior
versions: Python 2.5, Python 2.6, Python 2.7
Added file: http://bugs.python.org/file17007/doctest_unicode.patch

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue8471>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to