summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2022-02-02 02:12:27 (GMT)
committerGitHub <noreply@github.com>2022-02-02 02:12:27 (GMT)
commit85b421fbff23ff41c52fa5bde191920b3701f0d0 (patch)
tree1b301d137cb76b6c2b17131530198f9b1796698f
parent7dee93c2d223a080f410f6901987e9d363743471 (diff)
downloadcpython-85b421fbff23ff41c52fa5bde191920b3701f0d0.zip
cpython-85b421fbff23ff41c52fa5bde191920b3701f0d0.tar.gz
cpython-85b421fbff23ff41c52fa5bde191920b3701f0d0.tar.bz2
bpo-44359: Fix test_ftplib unhandled thread exceptions (GH-31069)
test_ftplib now silently ignores socket errors to prevent logging unhandled threading exceptions. (cherry picked from commit 0611eafc709cbe8a2a0bdde082d25df0c5034de7) Co-authored-by: Victor Stinner <vstinner@python.org>
-rw-r--r--Lib/test/test_ftplib.py15
-rw-r--r--Misc/NEWS.d/next/Tests/2022-02-02-02-24-04.bpo-44359.kPPSmN.rst2
2 files changed, 13 insertions, 4 deletions
diff --git a/Lib/test/test_ftplib.py b/Lib/test/test_ftplib.py
index 56e3d8a..2f5cc06 100644
--- a/Lib/test/test_ftplib.py
+++ b/Lib/test/test_ftplib.py
@@ -56,6 +56,13 @@ MLSD_DATA = ("type=cdir;perm=el;unique==keVO1+ZF4; test\r\n"
"type=file;perm=r;unique==SGP2; file \xAE non-ascii char\r\n")
+def default_error_handler():
+ # bpo-44359: Silently ignore socket errors. Such errors occur when a client
+ # socket is closed, in TestFTPClass.tearDown() and makepasv() tests, and
+ # the server gets an error on its side.
+ pass
+
+
class DummyDTPHandler(asynchat.async_chat):
dtp_conn_closed = False
@@ -87,7 +94,7 @@ class DummyDTPHandler(asynchat.async_chat):
super(DummyDTPHandler, self).push(what.encode(self.encoding))
def handle_error(self):
- raise Exception
+ default_error_handler()
class DummyFTPHandler(asynchat.async_chat):
@@ -137,7 +144,7 @@ class DummyFTPHandler(asynchat.async_chat):
self.push('550 command "%s" not understood.' %cmd)
def handle_error(self):
- raise Exception
+ default_error_handler()
def push(self, data):
asynchat.async_chat.push(self, data.encode(self.encoding) + b'\r\n')
@@ -315,7 +322,7 @@ class DummyFTPServer(asyncore.dispatcher, threading.Thread):
return 0
def handle_error(self):
- raise Exception
+ default_error_handler()
if ssl is not None:
@@ -418,7 +425,7 @@ if ssl is not None:
raise
def handle_error(self):
- raise Exception
+ default_error_handler()
def close(self):
if (isinstance(self.socket, ssl.SSLSocket) and
diff --git a/Misc/NEWS.d/next/Tests/2022-02-02-02-24-04.bpo-44359.kPPSmN.rst b/Misc/NEWS.d/next/Tests/2022-02-02-02-24-04.bpo-44359.kPPSmN.rst
new file mode 100644
index 0000000..00c29b1
--- /dev/null
+++ b/Misc/NEWS.d/next/Tests/2022-02-02-02-24-04.bpo-44359.kPPSmN.rst
@@ -0,0 +1,2 @@
+test_ftplib now silently ignores socket errors to prevent logging unhandled
+threading exceptions. Patch by Victor Stinner.