Issue 8471: Unicode returns in doctest can make subsequent tests fail (original) (raw)
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.