diff options
| author | Brett Cannon <bcannon@gmail.com> | 2007-03-13 02:34:09 (GMT) |
|---|---|---|
| committer | Brett Cannon <bcannon@gmail.com> | 2007-03-13 02:34:09 (GMT) |
| commit | 41d4e32353a546036d76c154169917f5f754ce09 (patch) | |
| tree | 639cdacc6cf63d28c7d9c26e0745be3c28153502 /Lib/test/test_support.py | |
| parent | 192cd567bdb7791560629ea43365cd1079f2fc54 (diff) | |
| download | cpython-41d4e32353a546036d76c154169917f5f754ce09.zip cpython-41d4e32353a546036d76c154169917f5f754ce09.tar.gz cpython-41d4e32353a546036d76c154169917f5f754ce09.tar.bz2 | |
Add test.test_support.transient_internet . Returns a context manager that
nests test.test_support.TransientResource context managers that capture
exceptions raised when the Internet connection is flaky.
Initially using in test_socket_ssl but should probably be expanded to cover any
test that should not raise the captured exceptions if the Internet connection
works.
Diffstat (limited to 'Lib/test/test_support.py')
| -rw-r--r-- | Lib/test/test_support.py | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py index 2e47aed..880e8e8 100644 --- a/Lib/test/test_support.py +++ b/Lib/test/test_support.py @@ -3,7 +3,9 @@ if __name__ != 'test.test_support': raise ImportError, 'test_support must be imported from the test package' -from contextlib import contextmanager +import contextlib +import errno +import socket import sys import warnings @@ -271,7 +273,7 @@ def open_urlresource(url): fn, _ = urllib.urlretrieve(url, filename) return open(fn) -@contextmanager +@contextlib.contextmanager def guard_warnings_filter(): """Guard the warnings filter from being permanently changed.""" original_filters = warnings.filters[:] @@ -338,6 +340,15 @@ class TransientResource(object): raise ResourceDenied("an optional resource is not available") +def transient_internet(): + """Return a context manager that raises ResourceDenied when various issues + with the Internet connection manifest themselves as exceptions.""" + time_out = TransientResource(IOError, errno=errno.ETIMEDOUT) + socket_peer_reset = TransientResource(socket.error, errno=errno.ECONNRESET) + ioerror_peer_reset = TransientResource(IOError, errno=errno.ECONNRESET) + return contextlib.nested(time_out, peer_reset, ioerror_peer_reset) + + #======================================================================= # Decorator for running a function in a different locale, correctly resetting # it afterwards. |
