--- test_pickle.py.bak 2013-02-27 21:35:12.242031789 +0530 +++ test_pickle.py 2013-02-27 21:46:35.585163137 +0530 @@ -1,5 +1,7 @@ import pickle -from cStringIO import StringIO +import cStringIO +import io +import os from test import test_support @@ -22,12 +24,16 @@ module = pickle error = KeyError -class PicklerTests(AbstractPickleTests): +class AbstractIOPicklerTests(AbstractPickleTests): error = KeyError + fileFlag = 0 def dumps(self, arg, proto=0, fast=0): - f = StringIO() + if not self.fileFlag: + f = self.ioclass() + else: + f = self.ioclass(file=test_support.TESTFN, mode='w+') p = pickle.Pickler(f, proto) if fast: p.fast = fast @@ -36,17 +42,37 @@ return f.read() def loads(self, buf): - f = StringIO(buf) + if not self.fileFlag: + f = self.ioclass(buf) + else: + f = self.ioclass(file=test_support.TESTFN, mode='w+') + f.write(buf) + f.seek(0) u = pickle.Unpickler(f) return u.load() -class PersPicklerTests(AbstractPersistentPicklerTests): +class StringIOPicklerTests(AbstractIOPicklerTests): + ioclass = cStringIO.StringIO + +class BytesIOPicklerTests(AbstractIOPicklerTests): + ioclass = io.BytesIO + +class FileIOPicklerTests(AbstractIOPicklerTests): + ioclass = io.FileIO + fileFlag = 1 + +class AbstractIOPersPicklerTests(AbstractPersistentPicklerTests): + + fileFlag = 0 def dumps(self, arg, proto=0, fast=0): class PersPickler(pickle.Pickler): def persistent_id(subself, obj): return self.persistent_id(obj) - f = StringIO() + if not self.fileFlag: + f = self.ioclass() + else: + f = self.ioclass(file=test_support.TESTFN, mode='w+') p = PersPickler(f, proto) if fast: p.fast = fast @@ -58,10 +84,25 @@ class PersUnpickler(pickle.Unpickler): def persistent_load(subself, obj): return self.persistent_load(obj) - f = StringIO(buf) + if not self.fileFlag: + f = self.ioclass(buf) + else: + f = self.ioclass(file=test_support.TESTFN, mode='w+') + f.write(buf) + f.seek(0) u = PersUnpickler(f) return u.load() +class StringIOPersPicklerTests(AbstractIOPersPicklerTests): + ioclass = cStringIO.StringIO + +class BytesIOPersPicklerTests(AbstractIOPersPicklerTests): + ioclass = io.BytesIO + +class FileIOPersPicklerTests(AbstractIOPersPicklerTests): + ioclass = io.FileIO + fileFlag = 1 + class PicklerUnpicklerObjectTests(AbstractPicklerUnpicklerObjectTests): pickler_class = pickle.Pickler @@ -81,12 +122,18 @@ def test_main(): test_support.run_unittest( PickleTests, - PicklerTests, - PersPicklerTests, + StringIOPicklerTests, + BytesIOPicklerTests, + FileIOPicklerTests, + StringIOPersPicklerTests, + BytesIOPersPicklerTests, + FileIOPersPicklerTests, PicklerUnpicklerObjectTests, PickleBigmemPickleTests, ) test_support.run_doctest(pickle) + if os.path.exists(test_support.TESTFN): + os.unlink(test_support.TESTFN) if __name__ == "__main__": test_main()