[pypy-commit] pypy default: move readline to RStringIO

bdkearns noreply at buildbot.pypy.org
Thu Mar 21 08:36:14 CET 2013


Author: Brian Kearns <bdkearns at gmail.com>
Branch: 
Changeset: r62606:535f3a9dd3b6
Date: 2013-03-21 03:27 -0400
http://bitbucket.org/pypy/pypy/changeset/535f3a9dd3b6/

Log:	move readline to RStringIO

diff --git a/pypy/module/cStringIO/interp_stringio.py b/pypy/module/cStringIO/interp_stringio.py
--- a/pypy/module/cStringIO/interp_stringio.py
+++ b/pypy/module/cStringIO/interp_stringio.py
@@ -149,22 +149,6 @@
         RStringIO.__init__(self)
         self.space = space
 
-    def readline(self, size=-1):
-        p = self.tell()
-        bigbuffer = self.copy_into_bigbuffer()
-        end = len(bigbuffer)
-        if size >= 0 and size < end - p:
-            end = p + size
-        assert p >= 0
-        i = p
-        while i < end:
-            finished = bigbuffer[i] == '\n'
-            i += 1
-            if finished:
-                break
-        self.seek(i)
-        return ''.join(bigbuffer[p:i])
-
     def descr_truncate(self, w_size=None):
         self.check_closed()
         space = self.space
diff --git a/rpython/rlib/rStringIO.py b/rpython/rlib/rStringIO.py
--- a/rpython/rlib/rStringIO.py
+++ b/rpython/rlib/rStringIO.py
@@ -126,6 +126,22 @@
             self.pos = p + count
             return ''.join(self.bigbuffer[p:p+count])
 
+    def readline(self, size=-1):
+        p = self.tell()
+        self.copy_into_bigbuffer()
+        end = len(self.bigbuffer)
+        if size >= 0 and size < end - p:
+            end = p + size
+        assert p >= 0
+        i = p
+        while i < end:
+            finished = self.bigbuffer[i] == '\n'
+            i += 1
+            if finished:
+                break
+        self.seek(i)
+        return ''.join(self.bigbuffer[p:i])
+
     def truncate(self, size):
         # NB. 'size' is mandatory.  This has the same un-Posix-y semantics
         # than CPython: it never grows the buffer, and it sets the current
diff --git a/rpython/rlib/test/test_rStringIO.py b/rpython/rlib/test/test_rStringIO.py
--- a/rpython/rlib/test/test_rStringIO.py
+++ b/rpython/rlib/test/test_rStringIO.py
@@ -77,6 +77,16 @@
     assert f.read(2) == ''
     assert f.tell() == 15
 
+def test_readline():
+    f = RStringIO()
+    f.write('foo\nbar\nbaz')
+    f.seek(0)
+    assert f.readline() == 'foo\n'
+    assert f.readline(2) == 'ba'
+    assert f.readline() == 'r\n'
+    assert f.readline() == 'baz'
+    assert f.readline() == ''
+
 def test_truncate():
     f = RStringIO()
     f.truncate(20)


More information about the pypy-commit mailing list