|
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