MCPcopy Index your code
hub / github.com/python/cpython / test_bad_state

Method test_bad_state

Lib/test/pickletester.py:1454–1487  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

1452 self.check_unpickling_error(error, b'cbuiltins\nint\n)N\x92.')
1453
1454 def test_bad_state(self):
1455 c = C()
1456 c.x = None
1457 base = b'c__main__\nC\n)\x81'
1458 self.assertEqual(self.loads(base + b'}X\x01\x00\x00\x00xNsb.'), c)
1459 self.assertEqual(self.loads(base + b'N}X\x01\x00\x00\x00xNs\x86b.'), c)
1460 # non-hashable dict key
1461 self.check_unpickling_error(TypeError, base + b'}]Nsb.')
1462 # state = list
1463 error = (pickle.UnpicklingError, AttributeError)
1464 self.check_unpickling_error(error, base + b'](}}eb.')
1465 # state = 1-tuple
1466 self.check_unpickling_error(error, base + b'}\x85b.')
1467 # state = 3-tuple
1468 self.check_unpickling_error(error, base + b'}}}\x87b.')
1469 # non-hashable slot name
1470 self.check_unpickling_error(TypeError, base + b'}}]Ns\x86b.')
1471 # non-string slot name
1472 self.check_unpickling_error(TypeError, base + b'}}NNs\x86b.')
1473 # dict = True
1474 self.check_unpickling_error(error, base + b'\x88}\x86b.')
1475 # slots dict = True
1476 self.check_unpickling_error(error, base + b'}\x88\x86b.')
1477
1478 class BadKey1:
1479 count = 1
1480 def __hash__(self):
1481 if not self.count:
1482 raise CustomError
1483 self.count -= 1
1484 return 42
1485 __main__.BadKey1 = BadKey1
1486 # bad hashable dict key
1487 self.check_unpickling_error(CustomError, base + b'}c__main__\nBadKey1\n)\x81Nsb.')
1488
1489 def test_bad_types(self):
1490 # APPEND

Callers

nothing calls this directly

Calls 4

loadsMethod · 0.95
CClass · 0.70
assertEqualMethod · 0.45

Tested by

no test coverage detected