(self, dumped, expected_error=None)
| 1106 | self.assertEqual(self.loads(data(idx)), ([],)*2) |
| 1107 | |
| 1108 | def _test_truncated_data(self, dumped, expected_error=None): |
| 1109 | # Test that instructions to read large data without providing |
| 1110 | # such amount of data do not cause large memory usage. |
| 1111 | if expected_error is None: |
| 1112 | expected_error = self.truncated_data_error |
| 1113 | # BytesIO |
| 1114 | with self.assertRaisesRegex(*expected_error): |
| 1115 | self.loads(dumped) |
| 1116 | if hasattr(self, 'unpickler'): |
| 1117 | try: |
| 1118 | with open(TESTFN, 'wb') as f: |
| 1119 | f.write(dumped) |
| 1120 | # buffered file |
| 1121 | with open(TESTFN, 'rb') as f: |
| 1122 | u = self.unpickler(f) |
| 1123 | with self.assertRaisesRegex(*expected_error): |
| 1124 | u.load() |
| 1125 | # unbuffered file |
| 1126 | with open(TESTFN, 'rb', buffering=0) as f: |
| 1127 | u = self.unpickler(f) |
| 1128 | with self.assertRaisesRegex(*expected_error): |
| 1129 | u.load() |
| 1130 | finally: |
| 1131 | os_helper.unlink(TESTFN) |
| 1132 | |
| 1133 | def test_truncated_large_binstring(self): |
| 1134 | data = lambda size: b'T' + struct.pack('<I', size) + b'.' * 5 |
no test coverage detected