From 35e249ff74cfcbc44889107cfcca785696dc4288 Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Fri, 23 Dec 2022 09:23:55 -0500 Subject: fix: certain strange characters caused reporting to fail. #1512 It turns out that str.splitlines() will break text on some characters that file.readline() does not! Use readline() to read source files the same way that Python does. --- coverage/phystokens.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'coverage') diff --git a/coverage/phystokens.py b/coverage/phystokens.py index d1181939..2ced9de3 100644 --- a/coverage/phystokens.py +++ b/coverage/phystokens.py @@ -4,6 +4,7 @@ """Better tokenizing for coverage.py.""" import ast +import io import keyword import re import token @@ -172,7 +173,7 @@ class CachedTokenizer: """A stand-in for `tokenize.generate_tokens`.""" if text != self.last_text: self.last_text = text - readline = iter(text.splitlines(True)).__next__ + readline = io.StringIO(text).readline try: self.last_tokens = list(tokenize.generate_tokens(readline)) except: -- cgit v1.2.1