[Python-checkins] r83268 - in python/branches/py3k: Lib/doctest.py Lib/test/test_doctest.py Misc/NEWS
georg.brandl
python-checkins at python.org
Fri Jul 30 11:23:23 CEST 2010
Author: georg.brandl
Date: Fri Jul 30 11:23:23 2010
New Revision: 83268
Log:
Issue #8048: Prevent doctests from failing when sys.displayhook has
been reassigned.
Modified:
python/branches/py3k/Lib/doctest.py
python/branches/py3k/Lib/test/test_doctest.py
python/branches/py3k/Misc/NEWS
Modified: python/branches/py3k/Lib/doctest.py
==============================================================================
--- python/branches/py3k/Lib/doctest.py (original)
+++ python/branches/py3k/Lib/doctest.py Fri Jul 30 11:23:23 2010
@@ -1379,12 +1379,17 @@
self.save_linecache_getlines = 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:
return self.__run(test, compileflags, out)
finally:
sys.stdout = save_stdout
pdb.set_trace = save_set_trace
linecache.getlines = self.save_linecache_getlines
+ sys.displayhook = save_displayhook
if clear_globs:
test.globs.clear()
import builtins
Modified: python/branches/py3k/Lib/test/test_doctest.py
==============================================================================
--- python/branches/py3k/Lib/test/test_doctest.py (original)
+++ python/branches/py3k/Lib/test/test_doctest.py Fri Jul 30 11:23:23 2010
@@ -980,6 +980,35 @@
ZeroDivisionError: integer division or modulo by zero
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"""
Tests of `DocTestRunner`'s option flag handling.
Modified: python/branches/py3k/Misc/NEWS
==============================================================================
--- python/branches/py3k/Misc/NEWS (original)
+++ python/branches/py3k/Misc/NEWS Fri Jul 30 11:23:23 2010
@@ -475,6 +475,9 @@
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
a breakpoint command.
More information about the Python-checkins
mailing list