mirror of
https://github.com/python/cpython.git
synced 2025-07-31 07:04:42 +00:00
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.
This commit is contained in:
parent
192cd567bd
commit
41d4e32353
2 changed files with 14 additions and 3 deletions
|
@ -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.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue