Merge pull request #3584 from jwodder/fix-3583

Fix encoding error with `print` statements in doctests
This commit is contained in:
Bruno Oliveira 2018-06-18 08:03:07 -03:00 committed by GitHub
commit 2925f3057f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 1 deletions

View File

@ -0,0 +1 @@
Fix encoding error with `print` statements in doctests

View File

@ -505,7 +505,7 @@ def _fix_spoof_python2(runner, encoding):
def getvalue(self):
result = _SpoofOut.getvalue(self)
if encoding:
if encoding and isinstance(result, bytes):
result = result.decode(encoding)
return result

View File

@ -655,6 +655,22 @@ class TestDoctests(object):
result = testdir.runpytest(p, "--doctest-modules")
result.stdout.fnmatch_lines(["* 1 passed *"])
def test_print_unicode_value(self, testdir):
"""
Test case for issue 3583: Printing Unicode in doctest under Python 2.7
doesn't work
"""
p = testdir.maketxtfile(
test_print_unicode_value=r"""
Here is a doctest::
>>> print(u'\xE5\xE9\xEE\xF8\xFC')
åéîøü
"""
)
result = testdir.runpytest(p)
result.stdout.fnmatch_lines(["* 1 passed *"])
def test_reportinfo(self, testdir):
"""
Test case to make sure that DoctestItem.reportinfo() returns lineno.