[Python-checkins] r70133 - python/branches/io-c/Lib/test/test_memoryio.py

benjamin.peterson python-checkins at python.org
Tue Mar 3 22:23:32 CET 2009


Author: benjamin.peterson
Date: Tue Mar  3 22:23:32 2009
New Revision: 70133

Log:
fix test_newline_property on _pyio.StringIO

Modified:
   python/branches/io-c/Lib/test/test_memoryio.py

Modified: python/branches/io-c/Lib/test/test_memoryio.py
==============================================================================
--- python/branches/io-c/Lib/test/test_memoryio.py	(original)
+++ python/branches/io-c/Lib/test/test_memoryio.py	Tue Mar  3 22:23:32 2009
@@ -417,6 +417,25 @@
 
     # TextIO-specific behaviour.
 
+    def test_newlines_property(self):
+        memio = self.ioclass(newline=None)
+        # The C StringIO decodes newlines in write() calls, but the Python
+        # implementation only does when reading.  This function forces them to
+        # be decoded for testing.
+        def force_decode():
+            memio.seek(0)
+            memio.read()
+        self.assertEqual(memio.newlines, None)
+        memio.write("a\n")
+        force_decode()
+        self.assertEqual(memio.newlines, "\n")
+        memio.write("b\r\n")
+        force_decode()
+        self.assertEqual(memio.newlines, ("\n", "\r\n"))
+        memio.write("c\rd")
+        force_decode()
+        self.assertEqual(memio.newlines, ("\r", "\n", "\r\n"))
+
     def test_relative_seek(self):
         memio = self.ioclass()
 
@@ -515,17 +534,6 @@
         self.assertEqual(memio.tell(), len(buf) * 2)
         self.assertEqual(memio.getvalue(), buf + buf)
 
-    # XXX This test fails with the Python version of io.StringIO
-    def test_newlines_property(self):
-        memio = self.ioclass(newline=None)
-        self.assertEqual(memio.newlines, None)
-        memio.write("a\n")
-        self.assertEqual(memio.newlines, "\n")
-        memio.write("b\r\n")
-        self.assertEqual(memio.newlines, ("\n", "\r\n"))
-        memio.write("c\rd")
-        self.assertEqual(memio.newlines, ("\r", "\n", "\r\n"))
-
 
 def test_main():
     tests = [PyBytesIOTest, PyStringIOTest, CBytesIOTest, CStringIOTest]


More information about the Python-checkins mailing list