Issue #8048: Prevent doctests from failing when sys.displayhook has
been reassigned.
This commit is contained in:
parent
46b9afc862
commit
25fbb891d8
@ -1379,12 +1379,17 @@ class DocTestRunner:
|
|||||||
self.save_linecache_getlines = linecache.getlines
|
self.save_linecache_getlines = linecache.getlines
|
||||||
linecache.getlines = self.__patched_linecache_getlines
|
linecache.getlines = self.__patched_linecache_getlines
|
||||||
|
|
||||||
|
# Make sure sys.displayhook just prints the value to stdout
|
||||||
|
save_displayhook = sys.displayhook
|
||||||
|
sys.displayhook = sys.__displayhook__
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return self.__run(test, compileflags, out)
|
return self.__run(test, compileflags, out)
|
||||||
finally:
|
finally:
|
||||||
sys.stdout = save_stdout
|
sys.stdout = save_stdout
|
||||||
pdb.set_trace = save_set_trace
|
pdb.set_trace = save_set_trace
|
||||||
linecache.getlines = self.save_linecache_getlines
|
linecache.getlines = self.save_linecache_getlines
|
||||||
|
sys.displayhook = save_displayhook
|
||||||
if clear_globs:
|
if clear_globs:
|
||||||
test.globs.clear()
|
test.globs.clear()
|
||||||
import builtins
|
import builtins
|
||||||
|
@ -979,6 +979,35 @@ unexpected exception:
|
|||||||
...
|
...
|
||||||
ZeroDivisionError: integer division or modulo by zero
|
ZeroDivisionError: integer division or modulo by zero
|
||||||
TestResults(failed=1, attempted=1)
|
TestResults(failed=1, attempted=1)
|
||||||
|
"""
|
||||||
|
def displayhook(): r"""
|
||||||
|
Test that changing sys.displayhook doesn't matter for doctest.
|
||||||
|
|
||||||
|
>>> import sys
|
||||||
|
>>> orig_displayhook = sys.displayhook
|
||||||
|
>>> def my_displayhook(x):
|
||||||
|
... print('hi!')
|
||||||
|
>>> sys.displayhook = my_displayhook
|
||||||
|
>>> def f():
|
||||||
|
... '''
|
||||||
|
... >>> 3
|
||||||
|
... 3
|
||||||
|
... '''
|
||||||
|
>>> test = doctest.DocTestFinder().find(f)[0]
|
||||||
|
>>> r = doctest.DocTestRunner(verbose=False).run(test)
|
||||||
|
>>> post_displayhook = sys.displayhook
|
||||||
|
|
||||||
|
We need to restore sys.displayhook now, so that we'll be able to test
|
||||||
|
results.
|
||||||
|
|
||||||
|
>>> sys.displayhook = orig_displayhook
|
||||||
|
|
||||||
|
Ok, now we can check that everything is ok.
|
||||||
|
|
||||||
|
>>> r
|
||||||
|
TestResults(failed=0, attempted=1)
|
||||||
|
>>> post_displayhook is my_displayhook
|
||||||
|
True
|
||||||
"""
|
"""
|
||||||
def optionflags(): r"""
|
def optionflags(): r"""
|
||||||
Tests of `DocTestRunner`'s option flag handling.
|
Tests of `DocTestRunner`'s option flag handling.
|
||||||
|
@ -475,6 +475,9 @@ C-API
|
|||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #8048: Prevent doctests from failing when sys.displayhook has
|
||||||
|
been reassigned.
|
||||||
|
|
||||||
- Issue #8015: In pdb, do not crash when an empty line is entered as
|
- Issue #8015: In pdb, do not crash when an empty line is entered as
|
||||||
a breakpoint command.
|
a breakpoint command.
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user