(self)
| 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 |
nothing calls this directly
no test coverage detected