From: R David Murray Date: Fri, 3 Oct 2014 01:53:50 +0000 (-0400) Subject: #8473: make doctest.testfile use universal newline mode. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9840db838475e675339a97b727ddbe0a3e162eb5;p=python #8473: make doctest.testfile use universal newline mode. --- diff --git a/Lib/doctest.py b/Lib/doctest.py index 86c9839b2a..6811406b30 100644 --- a/Lib/doctest.py +++ b/Lib/doctest.py @@ -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. diff --git a/Lib/test/test_doctest.py b/Lib/test/test_doctest.py index a58c4ae7a7..07a2997ae2 100644 --- a/Lib/test/test_doctest.py +++ b/Lib/test/test_doctest.py @@ -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. diff --git a/Misc/NEWS b/Misc/NEWS index 5adf6a92ff..badf93d8c8 100644 --- 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.