Fix Issue10119 - test_urllibnet failure when using support.transient_internet.

This commit is contained in:
Senthil Kumaran 2010-10-17 10:52:12 +00:00
parent 6f4e68d82c
commit ee2538beef
1 changed files with 10 additions and 20 deletions

View File

@ -11,21 +11,6 @@ import email.message
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):
TIMEOUT = 10.0
@ -37,7 +22,8 @@ class URLTimeoutTest(unittest.TestCase):
socket.setdefaulttimeout(None)
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()
class urlopenNetworkTests(unittest.TestCase):
@ -55,8 +41,10 @@ class urlopenNetworkTests(unittest.TestCase):
"""
def urlopen(self, *args):
return _open_with_retry(urllib.request.urlopen, *args)
def urlopen(self, *args, **kwargs):
resource = args[0]
with support.transient_internet(resource):
return urllib.request.urlopen(*args, **kwargs)
def test_basic(self):
# Simple test expected to pass.
@ -119,7 +107,7 @@ class urlopenNetworkTests(unittest.TestCase):
# test can't pass on Windows.
return
# 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()
FILE = os.fdopen(fd, encoding='utf-8')
try:
@ -146,7 +134,9 @@ class urlretrieveNetworkTests(unittest.TestCase):
"""Tests urllib.request.urlretrieve using the network."""
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):
# Test basic functionality.