diff options
-rw-r--r-- | Lib/io.py | 20 | ||||
-rwxr-xr-x | runtests.sh | 2 |
2 files changed, 14 insertions, 8 deletions
@@ -300,17 +300,23 @@ class IOBase: def readline(self, limit: int = -1) -> bytes: """For backwards compatibility, a (slowish) readline().""" + if hasattr(self, "peek"): + def nreadahead(): + readahead = self.peek(1, unsafe=True) + if not readahead: + return 1 + n = (readahead.find(b"\n") + 1) or len(readahead) + if limit >= 0: + n = min(n, limit) + return n + else: + def nreadahead(): + return 1 if limit is None: limit = -1 res = bytes() while limit < 0 or len(res) < limit: - readahead = self.peek(1, unsafe=True) - if not readahead: - break - n = (readahead.find(b"\n") + 1) or len(readahead) - if limit >= 0: - n = min(n, limit) - b = self.read(n) + b = self.read(nreadahead()) if not b: break res += b diff --git a/runtests.sh b/runtests.sh index 5a03b0a..c90460e 100755 --- a/runtests.sh +++ b/runtests.sh @@ -27,7 +27,7 @@ mkdir -p OUT # Compute the list of tests to run. case $# in 0) - TESTS=`(cd Lib/test; ls test_*.py | sed 's/\.py//' | grep -v test_socket)` + TESTS=`(cd Lib/test; ls test_*.py | sed 's/\.py//')` ;; *) TESTS="$@" |