|
26 | 26 | from test import support
|
27 | 27 | from test.support import os_helper
|
28 | 28 | from test.support import warnings_helper
|
29 |
| -from test.support import findfile, gc_collect, swap_attr |
| 29 | +from test.support import findfile, gc_collect, swap_attr, swap_item |
30 | 30 | from test.support.import_helper import import_fresh_module
|
31 | 31 | from test.support.os_helper import TESTFN
|
32 | 32 |
|
@@ -167,21 +167,18 @@ def setUpClass(cls):
|
167 | 167 | cls.modules = {pyET, ET}
|
168 | 168 |
|
169 | 169 | def pickleRoundTrip(self, obj, name, dumper, loader, proto):
|
170 |
| - save_m = sys.modules[name] |
171 | 170 | try:
|
172 |
| - sys.modules[name] = dumper |
173 |
| - temp = pickle.dumps(obj, proto) |
174 |
| - sys.modules[name] = loader |
175 |
| - result = pickle.loads(temp) |
| 171 | + with swap_item(sys.modules, name, dumper): |
| 172 | + temp = pickle.dumps(obj, proto) |
| 173 | + with swap_item(sys.modules, name, loader): |
| 174 | + result = pickle.loads(temp) |
176 | 175 | except pickle.PicklingError as pe:
|
177 | 176 | # pyET must be second, because pyET may be (equal to) ET.
|
178 | 177 | human = dict([(ET, "cET"), (pyET, "pyET")])
|
179 | 178 | raise support.TestFailed("Failed to round-trip %r from %r to %r"
|
180 | 179 | % (obj,
|
181 | 180 | human.get(dumper, dumper),
|
182 | 181 | human.get(loader, loader))) from pe
|
183 |
| - finally: |
184 |
| - sys.modules[name] = save_m |
185 | 182 | return result
|
186 | 183 |
|
187 | 184 | def assertEqualElements(self, alice, bob):
|
|
0 commit comments