From a40681dd5db8deaf05a635eecb91498dac882aa4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Wirtel?= Date: Fri, 22 Feb 2019 14:45:36 +0100 Subject: [PATCH] bpo-36019: Use pythontest.net instead of example.com in network tests (GH-11941) --- Doc/library/test.rst | 4 ++++ Lib/test/support/__init__.py | 4 ++++ Lib/test/test_urllib.py | 4 ++-- Lib/test/test_urllib2net.py | 12 ++++++------ Lib/test/test_urllibnet.py | 6 ++++-- .../Tests/2019-02-21-14-23-51.bpo-36019.zS_OUi.rst | 2 ++ 6 files changed, 22 insertions(+), 10 deletions(-) create mode 100644 Misc/NEWS.d/next/Tests/2019-02-21-14-23-51.bpo-36019.zS_OUi.rst diff --git a/Doc/library/test.rst b/Doc/library/test.rst index b5057c0ace562c..054521dcc5d3eb 100644 --- a/Doc/library/test.rst +++ b/Doc/library/test.rst @@ -356,6 +356,10 @@ The :mod:`test.support` module defines the following constants: Check for presence of docstrings. +.. data:: TEST_HTTP_URL + + Define the URL of a dedicated HTTP server for the network tests. + The :mod:`test.support` module defines the following functions: diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py index 9b75a211bea02f..c0938d90010a99 100644 --- a/Lib/test/support/__init__.py +++ b/Lib/test/support/__init__.py @@ -835,6 +835,10 @@ def dec(*args, **kwargs): # module name. TESTFN = "{}_{}_tmp".format(TESTFN, os.getpid()) +# Define the URL of a dedicated HTTP server for the network tests. +# The URL must use clear-text HTTP: no redirection to encrypted HTTPS. +TEST_HTTP_URL = "http://www.pythontest.net" + # FS_NONASCII: non-ASCII character encodable by os.fsencode(), # or None if there is no such character. FS_NONASCII = None diff --git a/Lib/test/test_urllib.py b/Lib/test/test_urllib.py index c292d74f84a93c..2ac73b58d83206 100644 --- a/Lib/test/test_urllib.py +++ b/Lib/test/test_urllib.py @@ -712,7 +712,7 @@ def _reporthook(par1, par2, par3): with self.assertRaises(urllib.error.ContentTooShortError): try: - urllib.request.urlretrieve('http://example.com/', + urllib.request.urlretrieve(support.TEST_HTTP_URL, reporthook=_reporthook) finally: self.unfakehttp() @@ -729,7 +729,7 @@ def test_short_content_raises_ContentTooShortError_without_reporthook(self): ''') with self.assertRaises(urllib.error.ContentTooShortError): try: - urllib.request.urlretrieve('http://example.com/') + urllib.request.urlretrieve(support.TEST_HTTP_URL) finally: self.unfakehttp() diff --git a/Lib/test/test_urllib2net.py b/Lib/test/test_urllib2net.py index 1aa64cbee1ca4b..0f43d71ea67b55 100644 --- a/Lib/test/test_urllib2net.py +++ b/Lib/test/test_urllib2net.py @@ -84,7 +84,7 @@ class CloseSocketTest(unittest.TestCase): def test_close(self): # calling .close() on urllib2's response objects should close the # underlying socket - url = "http://www.example.com/" + url = support.TEST_HTTP_URL with support.transient_internet(url): response = _urlopen_with_retry(url) sock = response.fp @@ -173,7 +173,7 @@ def test_redirect_url_withfrag(self): "http://www.pythontest.net/elsewhere/#frag") def test_custom_headers(self): - url = "http://www.example.com" + url = support.TEST_HTTP_URL with support.transient_internet(url): opener = urllib.request.build_opener() request = urllib.request.Request(url) @@ -259,7 +259,7 @@ def _extra_handlers(self): class TimeoutTest(unittest.TestCase): def test_http_basic(self): self.assertIsNone(socket.getdefaulttimeout()) - url = "http://www.example.com" + url = support.TEST_HTTP_URL with support.transient_internet(url, timeout=None): u = _urlopen_with_retry(url) self.addCleanup(u.close) @@ -267,7 +267,7 @@ def test_http_basic(self): def test_http_default_timeout(self): self.assertIsNone(socket.getdefaulttimeout()) - url = "http://www.example.com" + url = support.TEST_HTTP_URL with support.transient_internet(url): socket.setdefaulttimeout(60) try: @@ -279,7 +279,7 @@ def test_http_default_timeout(self): def test_http_no_timeout(self): self.assertIsNone(socket.getdefaulttimeout()) - url = "http://www.example.com" + url = support.TEST_HTTP_URL with support.transient_internet(url): socket.setdefaulttimeout(60) try: @@ -290,7 +290,7 @@ def test_http_no_timeout(self): self.assertIsNone(u.fp.raw._sock.gettimeout()) def test_http_timeout(self): - url = "http://www.example.com" + url = support.TEST_HTTP_URL 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 4103b6c07505d5..d394ceddd080e7 100644 --- a/Lib/test/test_urllibnet.py +++ b/Lib/test/test_urllibnet.py @@ -3,6 +3,7 @@ import contextlib import socket +import urllib.parse import urllib.request import os import email.message @@ -24,8 +25,9 @@ def tearDown(self): socket.setdefaulttimeout(None) def testURLread(self): - with support.transient_internet("www.example.com"): - f = urllib.request.urlopen("http://www.example.com/") + domain = urllib.parse.urlparse(support.TEST_HTTP_URL).netloc + with support.transient_internet(domain): + f = urllib.request.urlopen(support.TEST_HTTP_URL) f.read() diff --git a/Misc/NEWS.d/next/Tests/2019-02-21-14-23-51.bpo-36019.zS_OUi.rst b/Misc/NEWS.d/next/Tests/2019-02-21-14-23-51.bpo-36019.zS_OUi.rst new file mode 100644 index 00000000000000..b14d157ff49214 --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2019-02-21-14-23-51.bpo-36019.zS_OUi.rst @@ -0,0 +1,2 @@ +Add test.support.TEST_HTTP_URL and replace references of http://www.example.com +by this new constant. Contributed by Stéphane Wirtel.