From: Tim Peters Date: Thu, 13 Feb 2003 18:42:00 +0000 (+0000) Subject: Added a simple NEWOBJ test. This is in the pickle-only part of the X-Git-Tag: v2.3c1~1861 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e9ef203ea69d64b2bdaae4ebbb79e46716cd437d;p=thirdparty%2FPython%2Fcpython.git Added a simple NEWOBJ test. This is in the pickle-only part of the test for now (cPickle can't yet produce NEWOBJ). --- diff --git a/Lib/test/pickletester.py b/Lib/test/pickletester.py index 8479d4350c7d..c6ffbeacbd49 100644 --- a/Lib/test/pickletester.py +++ b/Lib/test/pickletester.py @@ -724,6 +724,16 @@ class AbstractPickleTests(unittest.TestCase): # XXX along with the references to it in test_pickle.py. class TempAbstractPickleTests(unittest.TestCase): + def test_simple_newobj(self): + x = object.__new__(SimpleNewObj) # avoid __init__ + x.abc = 666 + for proto in protocols: + s = self.dumps(x, proto) + self.assertEqual(opcode_in_pickle(pickle.NEWOBJ, s), proto >= 2) + y = self.loads(s) # will raise TypeError if __init__ called + self.assertEqual(y.abc, 666) + self.assertEqual(x.__dict__, y.__dict__) + def test_newobj_list_slots(self): x = SlotList([1, 2, 3]) x.foo = 42 @@ -771,6 +781,11 @@ myclasses = [MyInt, MyLong, MyFloat, class SlotList(MyList): __slots__ = ["foo"] +class SimpleNewObj(object): + def __init__(self, a, b, c): + # raise an error, to make sure this isn't called + raise TypeError("SimpleNewObj.__init__() didn't expect to get called") + class AbstractPickleModuleTests(unittest.TestCase): def test_dump_closed_file(self):