[Python-checkins] r69913 - python/branches/io-c/Lib/test/test_io.py

antoine.pitrou python-checkins at python.org
Mon Feb 23 21:10:30 CET 2009


Author: antoine.pitrou
Date: Mon Feb 23 21:10:30 2009
New Revision: 69913

Log:
Do the cyclic garbage collection tests only on the C version.
The Python version is helpless as it uses __del__.



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

Modified: python/branches/io-c/Lib/test/test_io.py
==============================================================================
--- python/branches/io-c/Lib/test/test_io.py	(original)
+++ python/branches/io-c/Lib/test/test_io.py	Mon Feb 23 21:10:30 2009
@@ -738,16 +738,6 @@
         self.assertRaises(IOError, bufio.seek, 0)
         self.assertRaises(IOError, bufio.tell)
 
-    def test_garbage_collection(self):
-        # BufferedReader objects are collected
-        rawio = self.FileIO(support.TESTFN, "w+b")
-        f = self.tp(rawio)
-        f.f = f
-        wr = weakref.ref(f)
-        del f
-        gc.collect()
-        self.assert_(wr() is None, wr)
-
 class CBufferedReaderTest(BufferedReaderTest):
     tp = io.BufferedReader
 
@@ -768,6 +758,17 @@
         # checking this is not so easy.
         self.assertRaises(IOError, bufio.read, 10)
 
+    def test_garbage_collection(self):
+        # C BufferedReader objects are collected.
+        # The Python version has __del__, so it ends into gc.garbage instead
+        rawio = self.FileIO(support.TESTFN, "w+b")
+        f = self.tp(rawio)
+        f.f = f
+        wr = weakref.ref(f)
+        del f
+        gc.collect()
+        self.assert_(wr() is None, wr)
+
 class PyBufferedReaderTest(BufferedReaderTest):
     tp = pyio.BufferedReader
 
@@ -977,20 +978,6 @@
         self.assertRaises(IOError, bufio.tell)
         self.assertRaises(IOError, bufio.write, b"abcdef")
 
-    def test_garbage_collection(self):
-        # BufferedWriter objects are collected, and collecting them flushes
-        # all data to disk.
-        rawio = self.FileIO(support.TESTFN, "w+b")
-        f = self.tp(rawio)
-        f.write(b"123xxx")
-        f.x = f
-        wr = weakref.ref(f)
-        del f
-        gc.collect()
-        self.assert_(wr() is None, wr)
-        with open(support.TESTFN, "rb") as f:
-            self.assertEqual(f.read(), b"123xxx")
-
 class CBufferedWriterTest(BufferedWriterTest):
     tp = io.BufferedWriter
 
@@ -1004,6 +991,21 @@
         self.assertRaises(ValueError, bufio.__init__, rawio, buffer_size=-1)
         self.assertRaises(ValueError, bufio.write, b"def")
 
+    def test_garbage_collection(self):
+        # C BufferedWriter objects are collected, and collecting them flushes
+        # all data to disk.
+        # The Python version has __del__, so it ends into gc.garbage instead
+        rawio = self.FileIO(support.TESTFN, "w+b")
+        f = self.tp(rawio)
+        f.write(b"123xxx")
+        f.x = f
+        wr = weakref.ref(f)
+        del f
+        gc.collect()
+        self.assert_(wr() is None, wr)
+        with open(support.TESTFN, "rb") as f:
+            self.assertEqual(f.read(), b"123xxx")
+
 
 class PyBufferedWriterTest(BufferedWriterTest):
     tp = pyio.BufferedWriter
@@ -1152,13 +1154,13 @@
         BufferedReaderTest.testMisbehavedRawIO(self)
         BufferedWriterTest.testMisbehavedRawIO(self)
 
+class CBufferedRandomTest(BufferedRandomTest):
+    tp = io.BufferedRandom
+
     def test_garbage_collection(self):
         BufferedReaderTest.test_garbage_collection(self)
         BufferedWriterTest.test_garbage_collection(self)
 
-class CBufferedRandomTest(BufferedRandomTest):
-    tp = io.BufferedRandom
-
 class PyBufferedRandomTest(BufferedRandomTest):
     tp = pyio.BufferedRandom
 
@@ -1519,21 +1521,6 @@
             self.assert_(s.startswith("Exception IOError: "), s)
             self.assert_(s.endswith(" ignored"), s)
 
-    def test_garbage_collection(self):
-        # TextIOWrapper objects are collected, and collecting them flushes
-        # all data to disk.
-        rawio = io.FileIO(support.TESTFN, "wb")
-        b = self.BufferedWriter(rawio)
-        t = self.TextIOWrapper(b, encoding="ascii")
-        t.write("456def")
-        t.x = t
-        wr = weakref.ref(t)
-        del t
-        gc.collect()
-        self.assert_(wr() is None, wr)
-        with open(support.TESTFN, "rb") as f:
-            self.assertEqual(f.read(), b"456def")
-
     # Systematic tests of the text I/O API
 
     def testBasicIO(self):
@@ -1829,6 +1816,22 @@
         self.assertRaises(ValueError, t.__init__, b, newline='xyzzy')
         self.assertRaises(ValueError, t.read)
 
+    def test_garbage_collection(self):
+        # C TextIOWrapper objects are collected, and collecting them flushes
+        # all data to disk.
+        # The Python version has __del__, so it ends in gc.garbage instead.
+        rawio = io.FileIO(support.TESTFN, "wb")
+        b = self.BufferedWriter(rawio)
+        t = self.TextIOWrapper(b, encoding="ascii")
+        t.write("456def")
+        t.x = t
+        wr = weakref.ref(t)
+        del t
+        gc.collect()
+        self.assert_(wr() is None, wr)
+        with open(support.TESTFN, "rb") as f:
+            self.assertEqual(f.read(), b"456def")
+
 class PyTextIOWrapperTest(TextIOWrapperTest):
     pass
 


More information about the Python-checkins mailing list