(self)
| 1363 | self.assertRaises((TypeError, AttributeError), unpickler4.find_class, 'math', None) |
| 1364 | |
| 1365 | def test_custom_find_class(self): |
| 1366 | def loads(data): |
| 1367 | class Unpickler(self.unpickler): |
| 1368 | def find_class(self, module_name, global_name): |
| 1369 | return (module_name, global_name) |
| 1370 | return Unpickler(io.BytesIO(data)).load() |
| 1371 | |
| 1372 | self.assertEqual(loads(b'cmath\nlog\n.'), ('math', 'log')) |
| 1373 | self.assertEqual(loads(b'\x8c\x04math\x8c\x03log\x93.'), ('math', 'log')) |
| 1374 | |
| 1375 | def loads(data): |
| 1376 | class Unpickler(self.unpickler): |
| 1377 | @staticmethod |
| 1378 | def find_class(module_name, global_name): |
| 1379 | return (module_name, global_name) |
| 1380 | return Unpickler(io.BytesIO(data)).load() |
| 1381 | |
| 1382 | self.assertEqual(loads(b'cmath\nlog\n.'), ('math', 'log')) |
| 1383 | self.assertEqual(loads(b'\x8c\x04math\x8c\x03log\x93.'), ('math', 'log')) |
| 1384 | |
| 1385 | def loads(data): |
| 1386 | class Unpickler(self.unpickler): |
| 1387 | @classmethod |
| 1388 | def find_class(cls, module_name, global_name): |
| 1389 | return (module_name, global_name) |
| 1390 | return Unpickler(io.BytesIO(data)).load() |
| 1391 | |
| 1392 | self.assertEqual(loads(b'cmath\nlog\n.'), ('math', 'log')) |
| 1393 | self.assertEqual(loads(b'\x8c\x04math\x8c\x03log\x93.'), ('math', 'log')) |
| 1394 | |
| 1395 | def loads(data): |
| 1396 | class Unpickler(self.unpickler): |
| 1397 | pass |
| 1398 | def find_class(module_name, global_name): |
| 1399 | return (module_name, global_name) |
| 1400 | unpickler = Unpickler(io.BytesIO(data)) |
| 1401 | unpickler.find_class = find_class |
| 1402 | return unpickler.load() |
| 1403 | |
| 1404 | self.assertEqual(loads(b'cmath\nlog\n.'), ('math', 'log')) |
| 1405 | self.assertEqual(loads(b'\x8c\x04math\x8c\x03log\x93.'), ('math', 'log')) |
| 1406 | |
| 1407 | def test_bad_ext_code(self): |
| 1408 | # unregistered extension code |
nothing calls this directly
no test coverage detected