diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2010-10-29 11:54:38 (GMT) |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2010-10-29 11:54:38 (GMT) |
commit | aa8796598ab9bcfd31c9ccc21d6dcf6fbf6d2e23 (patch) | |
tree | 3586e154d50b06ee7e410e9e90b7b26d4663678d /Lib/test/regrtest.py | |
parent | 31e08a4df6f0c4c1f6adaf0aa4fc1f6632815492 (diff) | |
download | cpython-aa8796598ab9bcfd31c9ccc21d6dcf6fbf6d2e23.zip cpython-aa8796598ab9bcfd31c9ccc21d6dcf6fbf6d2e23.tar.gz cpython-aa8796598ab9bcfd31c9ccc21d6dcf6fbf6d2e23.tar.bz2 |
Actually restore the original asyncore socket map by making a copy of the dict
Diffstat (limited to 'Lib/test/regrtest.py')
-rwxr-xr-x | Lib/test/regrtest.py | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py index db5ccf4..958582a 100755 --- a/Lib/test/regrtest.py +++ b/Lib/test/regrtest.py @@ -872,11 +872,12 @@ class saved_test_environment: def get_asyncore_socket_map(self): asyncore = sys.modules.get('asyncore') - return asyncore and asyncore.socket_map or {} + # XXX Making a copy keeps objects alive until __exit__ gets called. + return asyncore and asyncore.socket_map.copy() or {} def restore_asyncore_socket_map(self, saved_map): asyncore = sys.modules.get('asyncore') if asyncore is not None: - asyncore.socket_map.clear() + asyncore.close_all(ignore_all=True) asyncore.socket_map.update(saved_map) def resource_info(self): @@ -892,9 +893,11 @@ class saved_test_environment: return self def __exit__(self, exc_type, exc_val, exc_tb): + saved_values = self.saved_values + del self.saved_values for name, get, restore in self.resource_info(): current = get() - original = self.saved_values[name] + original = saved_values.pop(name) # Check for changes to the resource's value if current != original: self.changed = True |