(original) (raw)
changeset: 92763:4a5f79ca8ef0 branch: 2.7 parent: 92760:a53f2cf4b556 user: R David Murray rdmurray@bitdance.com date: Thu Oct 02 21:53:50 2014 -0400 files: Lib/doctest.py Lib/test/test_doctest.py Misc/NEWS description: #8473: make doctest.testfile use universal newline mode. diff -r a53f2cf4b556 -r 4a5f79ca8ef0 Lib/doctest.py --- a/Lib/doctest.py Thu Oct 02 12:35:08 2014 +0200 +++ b/Lib/doctest.py Thu Oct 02 21:53:50 2014 -0400 @@ -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 -r a53f2cf4b556 -r 4a5f79ca8ef0 Lib/test/test_doctest.py --- a/Lib/test/test_doctest.py Thu Oct 02 12:35:08 2014 +0200 +++ b/Lib/test/test_doctest.py Thu Oct 02 21:53:50 2014 -0400 @@ -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 -r a53f2cf4b556 -r 4a5f79ca8ef0 Misc/NEWS --- a/Misc/NEWS Thu Oct 02 12:35:08 2014 +0200 +++ b/Misc/NEWS Thu Oct 02 21:53:50 2014 -0400 @@ -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. /rdmurray@bitdance.com