1ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehimport cPickle 2ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehimport cStringIO 3ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehimport io 4ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehimport unittest 5ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehfrom test.pickletester import (AbstractPickleTests, 6ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh AbstractPickleModuleTests, 7ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh AbstractPicklerUnpicklerObjectTests, 8ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh BigmemPickleTests) 9ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehfrom test import test_support 10ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 11ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass cStringIOMixin: 12ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh output = input = cStringIO.StringIO 13ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 14ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh def close(self, f): 15ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh pass 16ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 17ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass BytesIOMixin: 18ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh output = input = io.BytesIO 19ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 20ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh def close(self, f): 21ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh pass 22ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 23ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass FileIOMixin: 24ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 25ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh def output(self): 26ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh return open(test_support.TESTFN, 'wb+') 27ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 28ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh def input(self, data): 29ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh f = open(test_support.TESTFN, 'wb+') 30ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh try: 31ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh f.write(data) 32ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh f.seek(0) 33ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh return f 34ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh except: 35ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh f.close() 36ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh raise 37ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 38ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh def close(self, f): 39ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh f.close() 40ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh test_support.unlink(test_support.TESTFN) 41ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 42ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 43ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass cPickleTests(AbstractPickleTests, AbstractPickleModuleTests): 44ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 45ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh def setUp(self): 46ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh self.dumps = cPickle.dumps 47ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh self.loads = cPickle.loads 48ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 49ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh error = cPickle.BadPickleGet 50ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh module = cPickle 51ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 52ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass cPicklePicklerTests(AbstractPickleTests): 53ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 54ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh def dumps(self, arg, proto=0): 55ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh f = self.output() 56ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh try: 57ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh p = cPickle.Pickler(f, proto) 58ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh p.dump(arg) 59ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh f.seek(0) 60ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh return f.read() 61ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh finally: 62ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh self.close(f) 63ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 64ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh def loads(self, buf): 65ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh f = self.input(buf) 66ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh try: 67ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh p = cPickle.Unpickler(f) 68ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh return p.load() 69ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh finally: 70ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh self.close(f) 71ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 72ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh error = cPickle.BadPickleGet 73ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 74ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass cStringIOCPicklerTests(cStringIOMixin, cPicklePicklerTests): 75ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh pass 76ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 77ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass BytesIOCPicklerTests(BytesIOMixin, cPicklePicklerTests): 78ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh pass 79ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 80ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass FileIOCPicklerTests(FileIOMixin, cPicklePicklerTests): 81ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh pass 82ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 83ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 84ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass cPickleListPicklerTests(AbstractPickleTests): 85ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 86ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh def dumps(self, arg, proto=0): 87ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh p = cPickle.Pickler(proto) 88ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh p.dump(arg) 89ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh return p.getvalue() 90ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 91ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh def loads(self, *args): 92ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh f = self.input(args[0]) 93ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh try: 94ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh p = cPickle.Unpickler(f) 95ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh return p.load() 96ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh finally: 97ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh self.close(f) 98ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 99ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh error = cPickle.BadPickleGet 100ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 101ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass cStringIOCPicklerListTests(cStringIOMixin, cPickleListPicklerTests): 102ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh pass 103ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 104ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass BytesIOCPicklerListTests(BytesIOMixin, cPickleListPicklerTests): 105ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh pass 106ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 107ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass FileIOCPicklerListTests(FileIOMixin, cPickleListPicklerTests): 108ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh pass 109ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 110ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 111ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass cPickleFastPicklerTests(AbstractPickleTests): 112ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 113ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh def dumps(self, arg, proto=0): 114ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh f = self.output() 115ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh try: 116ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh p = cPickle.Pickler(f, proto) 117ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh p.fast = 1 118ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh p.dump(arg) 119ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh f.seek(0) 120ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh return f.read() 121ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh finally: 122ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh self.close(f) 123ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 124ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh def loads(self, *args): 125ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh f = self.input(args[0]) 126ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh try: 127ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh p = cPickle.Unpickler(f) 128ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh return p.load() 129ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh finally: 130ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh self.close(f) 131ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 132ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh error = cPickle.BadPickleGet 133ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 134ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh def test_recursive_list(self): 135ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh self.assertRaises(ValueError, 136ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh AbstractPickleTests.test_recursive_list, 137ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh self) 138ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 139ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh def test_recursive_tuple(self): 140ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh self.assertRaises(ValueError, 141ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh AbstractPickleTests.test_recursive_tuple, 142ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh self) 143ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 144ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh def test_recursive_inst(self): 145ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh self.assertRaises(ValueError, 146ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh AbstractPickleTests.test_recursive_inst, 147ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh self) 148ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 149ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh def test_recursive_dict(self): 150ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh self.assertRaises(ValueError, 151ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh AbstractPickleTests.test_recursive_dict, 152ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh self) 153ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 154ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh def test_recursive_multi(self): 155ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh self.assertRaises(ValueError, 156ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh AbstractPickleTests.test_recursive_multi, 157ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh self) 158ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 159ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh def test_nonrecursive_deep(self): 160ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh # If it's not cyclic, it should pickle OK even if the nesting 161ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh # depth exceeds PY_CPICKLE_FAST_LIMIT. That happens to be 162ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh # 50 today. Jack Jansen reported stack overflow on Mac OS 9 163ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh # at 64. 164ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh a = [] 165ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh for i in range(60): 166ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh a = [a] 167ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh b = self.loads(self.dumps(a)) 168ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh self.assertEqual(a, b) 169ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 170ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass cStringIOCPicklerFastTests(cStringIOMixin, cPickleFastPicklerTests): 171ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh pass 172ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 173ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass BytesIOCPicklerFastTests(BytesIOMixin, cPickleFastPicklerTests): 174ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh pass 175ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 176ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass FileIOCPicklerFastTests(FileIOMixin, cPickleFastPicklerTests): 177ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh pass 178ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 179ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 180ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass cPicklePicklerUnpicklerObjectTests(AbstractPicklerUnpicklerObjectTests): 181ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 182ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh pickler_class = cPickle.Pickler 183ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh unpickler_class = cPickle.Unpickler 184ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 185ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass cPickleBigmemPickleTests(BigmemPickleTests): 186ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 187ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh def dumps(self, arg, proto=0, fast=0): 188ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh # Ignore fast 189ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh return cPickle.dumps(arg, proto) 190ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 191ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh def loads(self, buf): 192ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh # Ignore fast 193ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh return cPickle.loads(buf) 194ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 195ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 196ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass Node(object): 197ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh pass 198ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 199ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass cPickleDeepRecursive(unittest.TestCase): 200ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh def test_issue2702(self): 201ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh # This should raise a RecursionLimit but in some 202ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh # platforms (FreeBSD, win32) sometimes raises KeyError instead, 203ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh # or just silently terminates the interpreter (=crashes). 204ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh nodes = [Node() for i in range(500)] 205ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh for n in nodes: 206ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh n.connections = list(nodes) 207ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh n.connections.remove(n) 208ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh self.assertRaises((AttributeError, RuntimeError), cPickle.dumps, n) 209ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 210ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh def test_issue3179(self): 211ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh # Safe test, because I broke this case when fixing the 212ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh # behaviour for the previous test. 213ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh res=[] 214ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh for x in range(1,2000): 215ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh res.append(dict(doc=x, similar=[])) 216ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh cPickle.dumps(res) 217ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 218ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 219ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehdef test_main(): 220ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh test_support.run_unittest( 221ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh cPickleTests, 222ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh cStringIOCPicklerTests, 223ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh BytesIOCPicklerTests, 224ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh FileIOCPicklerTests, 225ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh cStringIOCPicklerListTests, 226ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh BytesIOCPicklerListTests, 227ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh FileIOCPicklerListTests, 228ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh cStringIOCPicklerFastTests, 229ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh BytesIOCPicklerFastTests, 230ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh FileIOCPicklerFastTests, 231ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh cPickleDeepRecursive, 232ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh cPicklePicklerUnpicklerObjectTests, 233ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh cPickleBigmemPickleTests, 234ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ) 235ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 236ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehif __name__ == "__main__": 237ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh test_main() 238