[Python-checkins] r78494 - in python/branches/release26-maint: Lib/doctest.py Lib/test/test_doctest.py Misc/NEWS

florent.xicluna python-checkins at python.org
Sat Feb 27 15:34:42 CET 2010


Author: florent.xicluna
Date: Sat Feb 27 15:34:41 2010
New Revision: 78494
Log:
Merged revisions 78488 via svnmerge from 
svn+ssh://pythondev@svn.python.org/python/trunk
........
 r78488 | florent.xicluna | 2010年02月27日 14:31:23 +0100 (sam, 27 fév 2010) | 2 lines
 
 Issue #1729305: Fix doctest to handle encode error with "backslashreplace". It fixes #7667 too.
........
Modified:
 python/branches/release26-maint/ (props changed)
 python/branches/release26-maint/Lib/doctest.py
 python/branches/release26-maint/Lib/test/test_doctest.py
 python/branches/release26-maint/Misc/NEWS
Modified: python/branches/release26-maint/Lib/doctest.py
==============================================================================
--- python/branches/release26-maint/Lib/doctest.py	(original)
+++ python/branches/release26-maint/Lib/doctest.py	Sat Feb 27 15:34:41 2010
@@ -218,11 +218,18 @@
 return file_contents.replace(os.linesep, '\n'), filename
 return open(filename).read(), filename
 
+# Use sys.stdout encoding for ouput.
+_encoding = getattr(sys.__stdout__, 'encoding', None) or 'utf-8'
+
 def _indent(s, indent=4):
 """
- Add the given number of space characters to the beginning every
- non-blank line in `s`, and return the result.
+ Add the given number of space characters to the beginning of
+ every non-blank line in `s`, and return the result.
+ If the string `s` is Unicode, it is encoded using the stdout
+ encoding and the `backslashreplace` error handler.
 """
+ if isinstance(s, unicode):
+ s = s.encode(_encoding, 'backslashreplace')
 # This regexp matches the start of non-blank lines:
 return re.sub('(?m)^(?!$)', indent*' ', s)
 
Modified: python/branches/release26-maint/Lib/test/test_doctest.py
==============================================================================
--- python/branches/release26-maint/Lib/test/test_doctest.py	(original)
+++ python/branches/release26-maint/Lib/test/test_doctest.py	Sat Feb 27 15:34:41 2010
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 """
 Test script for doctest.
 """
@@ -372,7 +373,7 @@
 >>> tests = finder.find(sample_func)
 
 >>> print tests # doctest: +ELLIPSIS
- [<DocTest sample_func from ...:16 (1 example)>]
+ [<DocTest sample_func from ...:17 (1 example)>]
 
 The exact name depends on how test_doctest was invoked, so allow for
 leading path components.
@@ -2143,6 +2144,13 @@
 called with the name of a file, which is taken to be relative to the
 calling module. The return value is (#failures, #tests).
 
+We don't want `-v` in sys.argv for these tests.
+
+ >>> save_argv = sys.argv
+ >>> if '-v' in sys.argv:
+ ... sys.argv = [arg for arg in save_argv if arg != '-v']
+
+
 >>> doctest.testfile('test_doctest.txt') # doctest: +ELLIPSIS
 **********************************************************************
 File "...", line 6, in test_doctest.txt
@@ -2282,6 +2290,41 @@
 >>> doctest.testfile('test_doctest4.txt', encoding='utf-8')
 TestResults(failed=0, attempted=4)
 >>> doctest.master = None # Reset master.
+
+Switch the module encoding to 'utf-8' to test the verbose output without
+bothering with the current sys.stdout encoding.
+
+ >>> doctest._encoding, saved_encoding = 'utf-8', doctest._encoding
+ >>> doctest.testfile('test_doctest4.txt', encoding='utf-8', verbose=True)
+ Trying:
+ u'föö'
+ Expecting:
+ u'f\xf6\xf6'
+ ok
+ Trying:
+ u'bąr'
+ Expecting:
+ u'b\u0105r'
+ ok
+ Trying:
+ 'föö'
+ Expecting:
+ 'f\xc3\xb6\xc3\xb6'
+ ok
+ Trying:
+ 'bąr'
+ Expecting:
+ 'b\xc4\x85r'
+ ok
+ 1 items passed all tests:
+ 4 tests in test_doctest4.txt
+ 4 tests in 1 items.
+ 4 passed and 0 failed.
+ Test passed.
+ TestResults(failed=0, attempted=4)
+ >>> doctest._encoding = saved_encoding
+ >>> doctest.master = None # Reset master.
+ >>> sys.argv = save_argv
 """
 
 # old_test1, ... used to live in doctest.py, but cluttered it. Note
Modified: python/branches/release26-maint/Misc/NEWS
==============================================================================
--- python/branches/release26-maint/Misc/NEWS	(original)
+++ python/branches/release26-maint/Misc/NEWS	Sat Feb 27 15:34:41 2010
@@ -74,6 +74,8 @@
 Library
 -------
 
+- Issue #1729305: Fix doctest to handle encode error with "backslashreplace".
+
 - Issue #691291: codecs.open() should not convert end of lines on reading and
 writing.
 


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /