bpo-35505: Skip test_imap4_host_default_value if localhost listens on IMAP port (GH-11823)


Make test_imap4_host_default_value independent on whether the
local IMAP server is running.
(cherry picked from commit 3dc67d0316740e78e7cd014343f34d85908219b7)

Co-authored-by: Matěj Cepl <mcepl@cepl.eu>
diff --git a/Lib/test/test_imaplib.py b/Lib/test/test_imaplib.py
index a0b598d..a060143 100644
--- a/Lib/test/test_imaplib.py
+++ b/Lib/test/test_imaplib.py
@@ -8,6 +8,7 @@
 import time
 import calendar
 import threading
+import socket
 
 from test.support import (reap_threads, verbose, transient_internet,
                           run_with_tz, run_with_locale, cpython_only)
@@ -71,6 +72,15 @@
             imaplib.Time2Internaldate(t)
 
     def test_imap4_host_default_value(self):
+        # Check whether the IMAP4_PORT is truly unavailable.
+        with socket.socket() as s:
+            try:
+                s.connect(('', imaplib.IMAP4_PORT))
+                self.skipTest(
+                    "Cannot run the test with local IMAP server running.")
+            except socket.error:
+                pass
+
         expected_errnos = [
             # This is the exception that should be raised.
             errno.ECONNREFUSED,