[Python-checkins] bpo-43049: Use io.IncrementalNewlineDecoder for doctest newline conversion (GH-24359)
zware
webhook-mailer at python.org
Tue Mar 2 12:06:28 EST 2021
https://github.com/python/cpython/commit/b36349a647b2bf8174f0e736a4fc347e92ae204e
commit: b36349a647b2bf8174f0e736a4fc347e92ae204e
branch: master
author: Peter Donis <peterdonis at alum.mit.edu>
committer: zware <zachary.ware at gmail.com>
date: 2021-03-02T11:06:20-06:00
summary:
bpo-43049: Use io.IncrementalNewlineDecoder for doctest newline conversion (GH-24359)
Followup to bpo-1812 and GH-17385.
files:
M Lib/doctest.py
diff --git a/Lib/doctest.py b/Lib/doctest.py
index 5bb35c9715d1e..e95c333f48aad 100644
--- a/Lib/doctest.py
+++ b/Lib/doctest.py
@@ -102,7 +102,7 @@ def _test():
import sys
import traceback
import unittest
-from io import StringIO
+from io import StringIO, IncrementalNewlineDecoder
from collections import namedtuple
TestResults = namedtuple('TestResults', 'failed attempted')
@@ -212,11 +212,8 @@ def _normalize_module(module, depth=2):
raise TypeError("Expected a module, string, or None")
def _newline_convert(data):
- # We have two cases to cover and we need to make sure we do
- # them in the right order
- for newline in ('\r\n', '\r'):
- data = data.replace(newline, '\n')
- return data
+ # The IO module provides a handy decoder for universal newline conversion
+ return IncrementalNewlineDecoder(None, True).decode(data, True)
def _load_testfile(filename, package, module_relative, encoding):
if module_relative:
More information about the Python-checkins
mailing list