Fix Issue10119 - test_urllibnet failure when using support.transient_internet.
This commit is contained in:
parent
6f4e68d82c
commit
ee2538beef
@ -11,21 +11,6 @@ import email.message
|
|||||||
import time
|
import time
|
||||||
|
|
||||||
|
|
||||||
def _open_with_retry(func, host, *args, **kwargs):
|
|
||||||
# Connecting to remote hosts is flaky. Make it more robust
|
|
||||||
# by retrying the connection several times.
|
|
||||||
last_exc = None
|
|
||||||
for i in range(3):
|
|
||||||
try:
|
|
||||||
return func(host, *args, **kwargs)
|
|
||||||
except IOError as err:
|
|
||||||
last_exc = err
|
|
||||||
continue
|
|
||||||
except:
|
|
||||||
raise
|
|
||||||
raise last_exc
|
|
||||||
|
|
||||||
|
|
||||||
class URLTimeoutTest(unittest.TestCase):
|
class URLTimeoutTest(unittest.TestCase):
|
||||||
|
|
||||||
TIMEOUT = 10.0
|
TIMEOUT = 10.0
|
||||||
@ -37,7 +22,8 @@ class URLTimeoutTest(unittest.TestCase):
|
|||||||
socket.setdefaulttimeout(None)
|
socket.setdefaulttimeout(None)
|
||||||
|
|
||||||
def testURLread(self):
|
def testURLread(self):
|
||||||
f = _open_with_retry(urllib.request.urlopen, "http://www.python.org/")
|
with support.transient_internet("www.python.org"):
|
||||||
|
f = urllib.request.urlopen("http://www.python.org/")
|
||||||
x = f.read()
|
x = f.read()
|
||||||
|
|
||||||
class urlopenNetworkTests(unittest.TestCase):
|
class urlopenNetworkTests(unittest.TestCase):
|
||||||
@ -55,8 +41,10 @@ class urlopenNetworkTests(unittest.TestCase):
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def urlopen(self, *args):
|
def urlopen(self, *args, **kwargs):
|
||||||
return _open_with_retry(urllib.request.urlopen, *args)
|
resource = args[0]
|
||||||
|
with support.transient_internet(resource):
|
||||||
|
return urllib.request.urlopen(*args, **kwargs)
|
||||||
|
|
||||||
def test_basic(self):
|
def test_basic(self):
|
||||||
# Simple test expected to pass.
|
# Simple test expected to pass.
|
||||||
@ -119,7 +107,7 @@ class urlopenNetworkTests(unittest.TestCase):
|
|||||||
# test can't pass on Windows.
|
# test can't pass on Windows.
|
||||||
return
|
return
|
||||||
# Make sure fd returned by fileno is valid.
|
# Make sure fd returned by fileno is valid.
|
||||||
open_url = self.urlopen("http://www.python.org/")
|
open_url = self.urlopen("http://www.python.org/", timeout=None)
|
||||||
fd = open_url.fileno()
|
fd = open_url.fileno()
|
||||||
FILE = os.fdopen(fd, encoding='utf-8')
|
FILE = os.fdopen(fd, encoding='utf-8')
|
||||||
try:
|
try:
|
||||||
@ -146,7 +134,9 @@ class urlretrieveNetworkTests(unittest.TestCase):
|
|||||||
"""Tests urllib.request.urlretrieve using the network."""
|
"""Tests urllib.request.urlretrieve using the network."""
|
||||||
|
|
||||||
def urlretrieve(self, *args):
|
def urlretrieve(self, *args):
|
||||||
return _open_with_retry(urllib.request.urlretrieve, *args)
|
resource = args[0]
|
||||||
|
with support.transient_internet(resource):
|
||||||
|
return urllib.request.urlretrieve(*args)
|
||||||
|
|
||||||
def test_basic(self):
|
def test_basic(self):
|
||||||
# Test basic functionality.
|
# Test basic functionality.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user