]> granicus.if.org Git - python/commitdiff
#8473: make doctest.testfile use universal newline mode.
authorR David Murray <rdmurray@bitdance.com>
Fri, 3 Oct 2014 01:53:50 +0000 (21:53 -0400)
committerR David Murray <rdmurray@bitdance.com>
Fri, 3 Oct 2014 01:53:50 +0000 (21:53 -0400)
Lib/doctest.py
Lib/test/test_doctest.py
Misc/NEWS

index 86c9839b2ae124967fd918994c1ab4d3f119f599..6811406b306bc64b2d5bf92c5eb0b7470b0b0fe0 100644 (file)
@@ -216,7 +216,7 @@ def _load_testfile(filename, package, module_relative):
                 # 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.
index a58c4ae7a709595b9ee97bc30a1ce2d755098274..07a2997ae2f6ece76542447fe4a78299625665ed 100644 (file)
@@ -2569,6 +2569,32 @@ bothering with the current sys.stdout encoding.
     >>> 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.
index 5adf6a92ff097499d64353baa544aab60d1e63f3..badf93d8c8d7a479f6a1ebef650cf8e1025ddf2c 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -31,6 +31,9 @@ Core and Builtins
 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.