summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/asyncore.py1
-rw-r--r--Lib/test/support/__init__.py5
-rw-r--r--Lib/test/test_smtpd.py4
-rw-r--r--Lib/test/test_smtplib.py67
-rw-r--r--Lib/test/test_socket.py4
-rw-r--r--Misc/NEWS.d/next/Tests/2017-09-08-15-59-07.bpo-29639.yIZecp.rst2
6 files changed, 48 insertions, 35 deletions
diff --git a/Lib/asyncore.py b/Lib/asyncore.py
index 03d1683..828f4d4 100644
--- a/Lib/asyncore.py
+++ b/Lib/asyncore.py
@@ -287,7 +287,6 @@ class dispatcher:
def set_socket(self, sock, map=None):
self.socket = sock
-## self.__dict__['socket'] = sock
self._fileno = sock.fileno()
self.add_channel(map)
diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py
index bfceba1..f57b251 100644
--- a/Lib/test/support/__init__.py
+++ b/Lib/test/support/__init__.py
@@ -601,9 +601,8 @@ def requires_mac_ver(*min_version):
return decorator
-# Don't use "localhost", since resolving it uses the DNS under recent
-# Windows versions (see issue #18792).
-HOST = "127.0.0.1"
+HOST = "localhost"
+HOSTv4 = "127.0.0.1"
HOSTv6 = "::1"
diff --git a/Lib/test/test_smtpd.py b/Lib/test/test_smtpd.py
index 3eebe94..a9f7d5a 100644
--- a/Lib/test/test_smtpd.py
+++ b/Lib/test/test_smtpd.py
@@ -170,11 +170,11 @@ class TestFamilyDetection(unittest.TestCase):
@unittest.skipUnless(support.IPV6_ENABLED, "IPv6 not enabled")
def test_socket_uses_IPv6(self):
- server = smtpd.SMTPServer((support.HOSTv6, 0), (support.HOST, 0))
+ server = smtpd.SMTPServer((support.HOSTv6, 0), (support.HOSTv4, 0))
self.assertEqual(server.socket.family, socket.AF_INET6)
def test_socket_uses_IPv4(self):
- server = smtpd.SMTPServer((support.HOST, 0), (support.HOSTv6, 0))
+ server = smtpd.SMTPServer((support.HOSTv4, 0), (support.HOSTv6, 0))
self.assertEqual(server.socket.family, socket.AF_INET)
diff --git a/Lib/test/test_smtplib.py b/Lib/test/test_smtplib.py
index 42f4266..4c9b7d3 100644
--- a/Lib/test/test_smtplib.py
+++ b/Lib/test/test_smtplib.py
@@ -19,10 +19,9 @@ import threading
import unittest
from test import support, mock_socket
+from test.support import HOST, HOSTv4, HOSTv6
-HOST = support.HOST
-
if sys.platform == 'darwin':
# select.poll returns a select.POLLHUP at the end of the tests
# on darwin, so just ignore it
@@ -208,8 +207,8 @@ class DebuggingServerTests(unittest.TestCase):
# Pick a random unused port by passing 0 for the port number
self.serv = smtpd.DebuggingServer((HOST, 0), ('nowhere', -1),
decode_data=True)
- # Keep a note of what port was assigned
- self.port = self.serv.socket.getsockname()[1]
+ # Keep a note of what server host and port were assigned
+ self.host, self.port = self.serv.socket.getsockname()[:2]
serv_args = (self.serv, self.serv_evt, self.client_evt)
self.thread = threading.Thread(target=debugging_server, args=serv_args)
self.thread.start()
@@ -231,6 +230,11 @@ class DebuggingServerTests(unittest.TestCase):
smtpd.DEBUGSTREAM.close()
smtpd.DEBUGSTREAM = self.old_DEBUGSTREAM
+ def get_output_without_xpeer(self):
+ test_output = self.output.getvalue()
+ return re.sub(r'(.*?)^X-Peer:\s*\S+\n(.*)', r'\1\2',
+ test_output, flags=re.MULTILINE|re.DOTALL)
+
def testBasic(self):
# connect
smtp = smtplib.SMTP(HOST, self.port, local_hostname='localhost', timeout=3)
@@ -238,16 +242,16 @@ class DebuggingServerTests(unittest.TestCase):
def testSourceAddress(self):
# connect
- port = support.find_unused_port()
+ src_port = support.find_unused_port()
try:
- smtp = smtplib.SMTP(HOST, self.port, local_hostname='localhost',
- timeout=3, source_address=('127.0.0.1', port))
- self.assertEqual(smtp.source_address, ('127.0.0.1', port))
+ smtp = smtplib.SMTP(self.host, self.port, local_hostname='localhost',
+ timeout=3, source_address=(self.host, src_port))
+ self.assertEqual(smtp.source_address, (self.host, src_port))
self.assertEqual(smtp.local_hostname, 'localhost')
smtp.quit()
except OSError as e:
if e.errno == errno.EADDRINUSE:
- self.skipTest("couldn't bind to port %d" % port)
+ self.skipTest("couldn't bind to source port %d" % src_port)
raise
def testNOOP(self):
@@ -374,10 +378,14 @@ class DebuggingServerTests(unittest.TestCase):
self.client_evt.set()
self.serv_evt.wait()
self.output.flush()
- # Add the X-Peer header that DebuggingServer adds
- m['X-Peer'] = socket.gethostbyname('localhost')
+ # Remove the X-Peer header that DebuggingServer adds as figuring out
+ # exactly what IP address format is put there is not easy (and
+ # irrelevant to our test). Typically 127.0.0.1 or ::1, but it is
+ # not always the same as socket.gethostbyname(HOST). :(
+ test_output = self.get_output_without_xpeer()
+ del m['X-Peer']
mexpect = '%s%s\n%s' % (MSG_BEGIN, m.as_string(), MSG_END)
- self.assertEqual(self.output.getvalue(), mexpect)
+ self.assertEqual(test_output, mexpect)
def testSendMessageWithAddresses(self):
m = email.mime.text.MIMEText('A test message')
@@ -397,12 +405,13 @@ class DebuggingServerTests(unittest.TestCase):
self.client_evt.set()
self.serv_evt.wait()
self.output.flush()
- # Add the X-Peer header that DebuggingServer adds
- m['X-Peer'] = socket.gethostbyname('localhost')
+ # Remove the X-Peer header that DebuggingServer adds.
+ test_output = self.get_output_without_xpeer()
+ del m['X-Peer']
# The Bcc header should not be transmitted.
del m['Bcc']
mexpect = '%s%s\n%s' % (MSG_BEGIN, m.as_string(), MSG_END)
- self.assertEqual(self.output.getvalue(), mexpect)
+ self.assertEqual(test_output, mexpect)
debugout = smtpd.DEBUGSTREAM.getvalue()
sender = re.compile("^sender: foo@bar.com$", re.MULTILINE)
self.assertRegex(debugout, sender)
@@ -426,10 +435,11 @@ class DebuggingServerTests(unittest.TestCase):
self.client_evt.set()
self.serv_evt.wait()
self.output.flush()
- # Add the X-Peer header that DebuggingServer adds
- m['X-Peer'] = socket.gethostbyname('localhost')
+ # Remove the X-Peer header that DebuggingServer adds.
+ test_output = self.get_output_without_xpeer()
+ del m['X-Peer']
mexpect = '%s%s\n%s' % (MSG_BEGIN, m.as_string(), MSG_END)
- self.assertEqual(self.output.getvalue(), mexpect)
+ self.assertEqual(test_output, mexpect)
debugout = smtpd.DEBUGSTREAM.getvalue()
sender = re.compile("^sender: foo@bar.com$", re.MULTILINE)
self.assertRegex(debugout, sender)
@@ -452,10 +462,11 @@ class DebuggingServerTests(unittest.TestCase):
self.client_evt.set()
self.serv_evt.wait()
self.output.flush()
- # Add the X-Peer header that DebuggingServer adds
- m['X-Peer'] = socket.gethostbyname('localhost')
+ # Remove the X-Peer header that DebuggingServer adds.
+ test_output = self.get_output_without_xpeer()
+ del m['X-Peer']
mexpect = '%s%s\n%s' % (MSG_BEGIN, m.as_string(), MSG_END)
- self.assertEqual(self.output.getvalue(), mexpect)
+ self.assertEqual(test_output, mexpect)
debugout = smtpd.DEBUGSTREAM.getvalue()
sender = re.compile("^sender: joe@example.com$", re.MULTILINE)
self.assertRegex(debugout, sender)
@@ -481,10 +492,11 @@ class DebuggingServerTests(unittest.TestCase):
self.client_evt.set()
self.serv_evt.wait()
self.output.flush()
- # Add the X-Peer header that DebuggingServer adds
- m['X-Peer'] = socket.gethostbyname('localhost')
+ # Remove the X-Peer header that DebuggingServer adds.
+ test_output = self.get_output_without_xpeer()
+ del m['X-Peer']
mexpect = '%s%s\n%s' % (MSG_BEGIN, m.as_string(), MSG_END)
- self.assertEqual(self.output.getvalue(), mexpect)
+ self.assertEqual(test_output, mexpect)
debugout = smtpd.DEBUGSTREAM.getvalue()
sender = re.compile("^sender: the_rescuers@Rescue-Aid-Society.com$", re.MULTILINE)
self.assertRegex(debugout, sender)
@@ -515,10 +527,11 @@ class DebuggingServerTests(unittest.TestCase):
# The Resent-Bcc headers are deleted before serialization.
del m['Bcc']
del m['Resent-Bcc']
- # Add the X-Peer header that DebuggingServer adds
- m['X-Peer'] = socket.gethostbyname('localhost')
+ # Remove the X-Peer header that DebuggingServer adds.
+ test_output = self.get_output_without_xpeer()
+ del m['X-Peer']
mexpect = '%s%s\n%s' % (MSG_BEGIN, m.as_string(), MSG_END)
- self.assertEqual(self.output.getvalue(), mexpect)
+ self.assertEqual(test_output, mexpect)
debugout = smtpd.DEBUGSTREAM.getvalue()
sender = re.compile("^sender: holy@grail.net$", re.MULTILINE)
self.assertRegex(debugout, sender)
diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py
index 27d9d49..05d8761 100644
--- a/Lib/test/test_socket.py
+++ b/Lib/test/test_socket.py
@@ -864,12 +864,12 @@ class GeneralModuleTests(unittest.TestCase):
self.fail("Error testing host resolution mechanisms. (fqdn: %s, all: %s)" % (fqhn, repr(all_host_names)))
def test_host_resolution(self):
- for addr in [support.HOST, '10.0.0.1', '255.255.255.255']:
+ for addr in [support.HOSTv4, '10.0.0.1', '255.255.255.255']:
self.assertEqual(socket.gethostbyname(addr), addr)
# we don't test support.HOSTv6 because there's a chance it doesn't have
# a matching name entry (e.g. 'ip6-localhost')
- for host in [support.HOST]:
+ for host in [support.HOSTv4]:
self.assertIn(host, socket.gethostbyaddr(host)[2])
def test_host_resolution_bad_address(self):
diff --git a/Misc/NEWS.d/next/Tests/2017-09-08-15-59-07.bpo-29639.yIZecp.rst b/Misc/NEWS.d/next/Tests/2017-09-08-15-59-07.bpo-29639.yIZecp.rst
new file mode 100644
index 0000000..7f49eb4
--- /dev/null
+++ b/Misc/NEWS.d/next/Tests/2017-09-08-15-59-07.bpo-29639.yIZecp.rst
@@ -0,0 +1,2 @@
+test.support.HOST is now "localhost", a new HOSTv4 constant has been added
+for your ``127.0.0.1`` needs, similar to the existing HOSTv6 constant.