From e74153a436a844f4606cba80ee6f9e41bd532df4 Mon Sep 17 00:00:00 2001 From: Ned Deily Date: Wed, 26 Mar 2014 23:26:03 -0700 Subject: [PATCH 1/2] Issue #20939: Backout test_urllib2.test_issue16464 disables: 68335b8afb1f 3.4 ad0c75b7bd7d default --- Lib/test/test_urllib2.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Lib/test/test_urllib2.py b/Lib/test/test_urllib2.py index 0316c3f4636..4b92d6317a0 100644 --- a/Lib/test/test_urllib2.py +++ b/Lib/test/test_urllib2.py @@ -6,10 +6,6 @@ import io import socket import array import sys -try: - import ssl -except ImportError: - ssl = None import urllib.request # The proxy bypass method imported below has logic specific to the OSX @@ -1442,8 +1438,6 @@ class MiscTests(unittest.TestCase): @unittest.skipUnless(support.is_resource_enabled('network'), 'test requires network access') - @unittest.skipIf(ssl is None, - 'test requires the ssl module') def test_issue16464(self): opener = urllib.request.build_opener() request = urllib.request.Request("http://www.python.org/~jeremy/") From 5a507f0f05d6204559af7c54aabe3bd3a6953dfd Mon Sep 17 00:00:00 2001 From: Ned Deily Date: Wed, 26 Mar 2014 23:31:39 -0700 Subject: [PATCH 2/2] Issue #20939: Use www.example.com instead of www.python.org to avoid test failures when ssl is not present. --- Lib/test/test_site.py | 4 +++- Lib/test/test_urllib2.py | 2 +- Lib/test/test_urllib2net.py | 10 +++++----- Lib/test/test_urllibnet.py | 26 +++++++++++++------------- Misc/NEWS | 4 ++++ 5 files changed, 26 insertions(+), 20 deletions(-) diff --git a/Lib/test/test_site.py b/Lib/test/test_site.py index 2d214f4baf5..58a3ee86c44 100644 --- a/Lib/test/test_site.py +++ b/Lib/test/test_site.py @@ -414,8 +414,10 @@ class ImportSideEffectTests(unittest.TestCase): @test.support.requires_resource('network') @unittest.skipUnless(sys.version_info[3] == 'final', 'only for released versions') + @unittest.skipUnless(hasattr(urllib.request, "HTTPSHandler"), + 'need SSL support to download license') def test_license_exists_at_url(self): - # This test is a bit fragile since it depends on the format of the + # This test `is a bit fragile since it depends on the format of the # string displayed by license in the absence of a LICENSE file. url = license._Printer__data.split()[1] req = urllib.request.Request(url, method='HEAD') diff --git a/Lib/test/test_urllib2.py b/Lib/test/test_urllib2.py index 4b92d6317a0..6272105e2af 100644 --- a/Lib/test/test_urllib2.py +++ b/Lib/test/test_urllib2.py @@ -1440,7 +1440,7 @@ class MiscTests(unittest.TestCase): 'test requires network access') def test_issue16464(self): opener = urllib.request.build_opener() - request = urllib.request.Request("http://www.python.org/~jeremy/") + request = urllib.request.Request("http://www.example.com/") self.assertEqual(None, request.data) opener.open(request, "1".encode("us-ascii")) diff --git a/Lib/test/test_urllib2net.py b/Lib/test/test_urllib2net.py index 78891fd797e..3b2f2b8bc1e 100644 --- a/Lib/test/test_urllib2net.py +++ b/Lib/test/test_urllib2net.py @@ -83,7 +83,7 @@ class CloseSocketTest(unittest.TestCase): def test_close(self): # calling .close() on urllib2's response objects should close the # underlying socket - url = "http://www.python.org/" + url = "http://www.example.com/" with support.transient_internet(url): response = _urlopen_with_retry(url) sock = response.fp @@ -263,7 +263,7 @@ class OtherNetworkTests(unittest.TestCase): class TimeoutTest(unittest.TestCase): def test_http_basic(self): self.assertIsNone(socket.getdefaulttimeout()) - url = "http://www.python.org" + url = "http://www.example.com" with support.transient_internet(url, timeout=None): u = _urlopen_with_retry(url) self.addCleanup(u.close) @@ -271,7 +271,7 @@ class TimeoutTest(unittest.TestCase): def test_http_default_timeout(self): self.assertIsNone(socket.getdefaulttimeout()) - url = "http://www.python.org" + url = "http://www.example.com" with support.transient_internet(url): socket.setdefaulttimeout(60) try: @@ -283,7 +283,7 @@ class TimeoutTest(unittest.TestCase): def test_http_no_timeout(self): self.assertIsNone(socket.getdefaulttimeout()) - url = "http://www.python.org" + url = "http://www.example.com" with support.transient_internet(url): socket.setdefaulttimeout(60) try: @@ -294,7 +294,7 @@ class TimeoutTest(unittest.TestCase): self.assertIsNone(u.fp.raw._sock.gettimeout()) def test_http_timeout(self): - url = "http://www.python.org" + url = "http://www.example.com" with support.transient_internet(url): u = _urlopen_with_retry(url, timeout=120) self.addCleanup(u.close) diff --git a/Lib/test/test_urllibnet.py b/Lib/test/test_urllibnet.py index fba6dbb8629..8578695d196 100644 --- a/Lib/test/test_urllibnet.py +++ b/Lib/test/test_urllibnet.py @@ -22,8 +22,8 @@ class URLTimeoutTest(unittest.TestCase): socket.setdefaulttimeout(None) def testURLread(self): - with support.transient_internet("www.python.org"): - f = urllib.request.urlopen("http://www.python.org/") + with support.transient_internet("www.example.com"): + f = urllib.request.urlopen("http://www.example.com/") x = f.read() @@ -36,7 +36,7 @@ class urlopenNetworkTests(unittest.TestCase): for transparent redirection have been written. setUp is not used for always constructing a connection to - http://www.python.org/ since there a few tests that don't use that address + http://www.example.com/ since there a few tests that don't use that address and making a connection is expensive enough to warrant minimizing unneeded connections. @@ -54,7 +54,7 @@ class urlopenNetworkTests(unittest.TestCase): def test_basic(self): # Simple test expected to pass. - with self.urlopen("http://www.python.org/") as open_url: + with self.urlopen("http://www.example.com/") as open_url: for attr in ("read", "readline", "readlines", "fileno", "close", "info", "geturl"): self.assertTrue(hasattr(open_url, attr), "object returned from " @@ -63,7 +63,7 @@ class urlopenNetworkTests(unittest.TestCase): def test_readlines(self): # Test both readline and readlines. - with self.urlopen("http://www.python.org/") as open_url: + with self.urlopen("http://www.example.com/") as open_url: self.assertIsInstance(open_url.readline(), bytes, "readline did not return a string") self.assertIsInstance(open_url.readlines(), list, @@ -71,7 +71,7 @@ class urlopenNetworkTests(unittest.TestCase): def test_info(self): # Test 'info'. - with self.urlopen("http://www.python.org/") as open_url: + with self.urlopen("http://www.example.com/") as open_url: info_obj = open_url.info() self.assertIsInstance(info_obj, email.message.Message, "object returned by 'info' is not an " @@ -80,14 +80,14 @@ class urlopenNetworkTests(unittest.TestCase): def test_geturl(self): # Make sure same URL as opened is returned by geturl. - URL = "https://www.python.org/" + URL = "http://www.example.com/" with self.urlopen(URL) as open_url: gotten_url = open_url.geturl() self.assertEqual(gotten_url, URL) def test_getcode(self): # test getcode() with the fancy opener to get 404 error codes - URL = "http://www.python.org/XXXinvalidXXX" + URL = "http://www.example.com/XXXinvalidXXX" with support.transient_internet(URL): open_url = urllib.request.FancyURLopener().open(URL) try: @@ -101,7 +101,7 @@ class urlopenNetworkTests(unittest.TestCase): @unittest.skipIf(sys.platform in ('win32',), 'not appropriate for Windows') def test_fileno(self): # Make sure fd returned by fileno is valid. - with self.urlopen("http://www.python.org/", timeout=None) as open_url: + with self.urlopen("http://www.example.com/", timeout=None) as open_url: fd = open_url.fileno() with os.fdopen(fd, 'rb') as f: self.assertTrue(f.read(), "reading from file created using fd " @@ -147,7 +147,7 @@ class urlretrieveNetworkTests(unittest.TestCase): def test_basic(self): # Test basic functionality. - with self.urlretrieve("http://www.python.org/") as (file_location, info): + with self.urlretrieve("http://www.example.com/") as (file_location, info): self.assertTrue(os.path.exists(file_location), "file location returned by" " urlretrieve is not a valid path") with open(file_location, 'rb') as f: @@ -156,7 +156,7 @@ class urlretrieveNetworkTests(unittest.TestCase): def test_specified_path(self): # Make sure that specifying the location of the file to write to works. - with self.urlretrieve("http://www.python.org/", + with self.urlretrieve("http://www.example.com/", support.TESTFN) as (file_location, info): self.assertEqual(file_location, support.TESTFN) self.assertTrue(os.path.exists(file_location)) @@ -165,11 +165,11 @@ class urlretrieveNetworkTests(unittest.TestCase): def test_header(self): # Make sure header returned as 2nd value from urlretrieve is good. - with self.urlretrieve("http://www.python.org/") as (file_location, info): + with self.urlretrieve("http://www.example.com/") as (file_location, info): self.assertIsInstance(info, email.message.Message, "info is not an instance of email.message.Message") - logo = "http://www.python.org/static/community_logos/python-logo-master-v3-TM.png" + logo = "http://www.example.com/" def test_data_header(self): with self.urlretrieve(self.logo) as (file_location, fileheaders): diff --git a/Misc/NEWS b/Misc/NEWS index b00a01708cc..59e6d1c6949 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -103,6 +103,10 @@ Tests - Issue #20743: Fix a reference leak in test_tcl. +- Issue #20939: Avoid various network test failures due to new + redirect of http://www.python.org/ to https://www.python.org: + use http://www.example.com instead. + Tools/Demos -----------