Commit 9840db83 authored by R David Murray's avatar R David Murray

#8473: make doctest.testfile use universal newline mode.

parent 52d0a1b1
...@@ -216,7 +216,7 @@ def _load_testfile(filename, package, module_relative): ...@@ -216,7 +216,7 @@ def _load_testfile(filename, package, module_relative):
# get_data() opens files as 'rb', so one must do the equivalent # get_data() opens files as 'rb', so one must do the equivalent
# conversion as universal newlines would do. # conversion as universal newlines would do.
return file_contents.replace(os.linesep, '\n'), filename return file_contents.replace(os.linesep, '\n'), filename
with open(filename) as f: with open(filename, 'U') as f:
return f.read(), filename return f.read(), filename
# Use sys.stdout encoding for ouput. # Use sys.stdout encoding for ouput.
......
...@@ -2569,6 +2569,32 @@ bothering with the current sys.stdout encoding. ...@@ -2569,6 +2569,32 @@ bothering with the current sys.stdout encoding.
>>> sys.argv = save_argv >>> 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 # old_test1, ... used to live in doctest.py, but cluttered it. Note
# that these use the deprecated doctest.Tester, so should go away (or # that these use the deprecated doctest.Tester, so should go away (or
# be rewritten) someday. # be rewritten) someday.
......
...@@ -31,6 +31,9 @@ Core and Builtins ...@@ -31,6 +31,9 @@ Core and Builtins
Library 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 #20076: Added non derived UTF-8 aliases to locale aliases table.
- Issue #20079: Added locales supported in glibc 2.18 to locale alias table. - Issue #20079: Added locales supported in glibc 2.18 to locale alias table.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment