]> granicus.if.org Git - python/commitdiff
Issue #22596: support.transient_internet() now also catches
authorBerker Peksag <berker.peksag@gmail.com>
Sat, 25 Oct 2014 02:42:30 +0000 (05:42 +0300)
committerBerker Peksag <berker.peksag@gmail.com>
Sat, 25 Oct 2014 02:42:30 +0000 (05:42 +0300)
ConnectionRefusedError exceptions wrapped by urllib.error.URLError.

This change should fix sporadic failures in test_urllib2net.

Lib/test/support/__init__.py
Lib/test/test_urllib2net.py

index f2c1a92231185df56b357944d02355608d724b5d..adebeddbd98fabdd4d1b25c5bf6413a506c5554e 100644 (file)
@@ -25,6 +25,7 @@ import sysconfig
 import tempfile
 import time
 import unittest
+import urllib.error
 import warnings
 
 try:
@@ -1307,6 +1308,8 @@ def transient_internet(resource_name, *, timeout=30.0, errnos=()):
         n = getattr(err, 'errno', None)
         if (isinstance(err, socket.timeout) or
             (isinstance(err, socket.gaierror) and n in gai_errnos) or
+            (isinstance(err, urllib.error.URLError) and
+             "ConnectionRefusedError" in err.reason) or
             n in captured_errnos):
             if not verbose:
                 sys.stderr.write(denied.args[0] + "\n")
index 51b7fc50abd30fd8b7d28749a02e5890cc76bcca..6f78cea1b79f034100d8e42376a1297163582bea 100644 (file)
@@ -229,6 +229,7 @@ class OtherNetworkTests(unittest.TestCase):
                 with support.transient_internet(url):
                     try:
                         f = urlopen(url, req, TIMEOUT)
+                    # urllib.error.URLError is a subclass of OSError
                     except OSError as err:
                         if expected_err:
                             msg = ("Didn't get expected error(s) %s for %s %s, got %s: %s" %
@@ -236,12 +237,6 @@ class OtherNetworkTests(unittest.TestCase):
                             self.assertIsInstance(err, expected_err, msg)
                         else:
                             raise
-                    except urllib.error.URLError as err:
-                        if isinstance(err[0], socket.timeout):
-                            print("<timeout: %s>" % url, file=sys.stderr)
-                            continue
-                        else:
-                            raise
                     else:
                         try:
                             with support.time_out, \