[Python-checkins] cpython (2.7): #8473: make doctest.testfile use universal newline mode.

r.david.murray python-checkins at python.org
Fri Oct 3 04:44:36 CEST 2014


https://hg.python.org/cpython/rev/4a5f79ca8ef0
changeset: 92763:4a5f79ca8ef0
branch: 2.7
parent: 92760:a53f2cf4b556
user: R David Murray <rdmurray at bitdance.com>
date: Thu Oct 02 21:53:50 2014 -0400
summary:
 #8473: make doctest.testfile use universal newline mode.
files:
 Lib/doctest.py | 2 +-
 Lib/test/test_doctest.py | 26 ++++++++++++++++++++++++++
 Misc/NEWS | 3 +++
 3 files changed, 30 insertions(+), 1 deletions(-)
diff --git a/Lib/doctest.py b/Lib/doctest.py
--- a/Lib/doctest.py
+++ b/Lib/doctest.py
@@ -216,7 +216,7 @@
 # get_data() opens files as 'rb', so one must do the equivalent
 # conversion as universal newlines would do.
 return file_contents.replace(os.linesep, '\n'), filename
- with open(filename) as f:
+ with open(filename, 'U') as f:
 return f.read(), filename
 
 # Use sys.stdout encoding for ouput.
diff --git a/Lib/test/test_doctest.py b/Lib/test/test_doctest.py
--- a/Lib/test/test_doctest.py
+++ b/Lib/test/test_doctest.py
@@ -2569,6 +2569,32 @@
 >>> sys.argv = save_argv
 """
 
+def test_lineendings(): r"""
+*nix systems use \n line endings, while Windows systems use \r\n. Python
+handles this using universal newline mode for reading files. Let's make
+sure doctest does so (issue 8473) by creating temporary test files using each
+of the two line disciplines. One of the two will be the "wrong" one for the
+platform the test is run on.
+
+Windows line endings first:
+
+ >>> import tempfile, os
+ >>> fn = tempfile.mktemp()
+ >>> open(fn, 'w').write('Test:\r\n\r\n >>> x = 1 + 1\r\n\r\nDone.\r\n')
+ >>> doctest.testfile(fn, False)
+ TestResults(failed=0, attempted=1)
+ >>> os.remove(fn)
+
+And now *nix line endings:
+
+ >>> fn = tempfile.mktemp()
+ >>> open(fn, 'w').write('Test:\n\n >>> x = 1 + 1\n\nDone.\n')
+ >>> doctest.testfile(fn, False)
+ TestResults(failed=0, attempted=1)
+ >>> os.remove(fn)
+
+"""
+
 # old_test1, ... used to live in doctest.py, but cluttered it. Note
 # that these use the deprecated doctest.Tester, so should go away (or
 # be rewritten) someday.
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -31,6 +31,9 @@
 Library
 -------
 
+- Issue #8473: doctest.testfile now uses universal newline mode to read
+ the test file.
+
 - Issue #20076: Added non derived UTF-8 aliases to locale aliases table.
 
 - Issue #20079: Added locales supported in glibc 2.18 to locale alias table.
-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list

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