From 64874960a26eeea806d4118f23f72dceccb2e756 Mon Sep 17 00:00:00 2001 From: Peter Donis Date: Wed, 27 Jan 2021 20:50:08 -0500 Subject: [PATCH] Use io.IncrementalNewlineDecoder for doctest newline conversion. --- Lib/doctest.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/Lib/doctest.py b/Lib/doctest.py index 5bb35c9715d1e9..e95c333f48aad5 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: