Skip to content

Commit

Permalink
Merge pull request #3584 from jwodder/fix-3583
Browse files Browse the repository at this point in the history
Fix encoding error with `print` statements in doctests
  • Loading branch information
nicoddemus committed Jun 18, 2018
2 parents a93ad1f + d382f3e commit 2925f30
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 1 deletion.
1 change: 1 addition & 0 deletions changelog/3583.bugfix.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fix encoding error with `print` statements in doctests
2 changes: 1 addition & 1 deletion src/_pytest/doctest.py
Original file line number Diff line number Diff line change
Expand Up @@ -505,7 +505,7 @@ class UnicodeSpoof(_SpoofOut):

def getvalue(self):
result = _SpoofOut.getvalue(self)
if encoding:
if encoding and isinstance(result, bytes):
result = result.decode(encoding)
return result

Expand Down
16 changes: 16 additions & 0 deletions testing/test_doctest.py
Original file line number Diff line number Diff line change
Expand Up @@ -655,6 +655,22 @@ def fix_bad_unicode(text):
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.
Expand Down

0 comments on commit 2925f30

Please sign in to comment.