diff --git a/Lib/test/test_smtplib.py b/Lib/test/test_smtplib.py index fff319d60ea..32d2d9b5e98 100644 --- a/Lib/test/test_smtplib.py +++ b/Lib/test/test_smtplib.py @@ -47,17 +47,21 @@ def server(evt, buf, serv): class GeneralTests(TestCase): def setUp(self): + self._threads = support.threading_setup() self.evt = threading.Event() self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.sock.settimeout(15) self.port = support.bind_port(self.sock) servargs = (self.evt, b"220 Hola mundo\n", self.sock) - threading.Thread(target=server, args=servargs).start() + self.thread = threading.Thread(target=server, args=servargs) + self.thread.start() self.evt.wait() self.evt.clear() def tearDown(self): self.evt.wait() + self.thread.join() + support.threading_cleanup(*self._threads) def testBasic1(self): # connects @@ -150,12 +154,14 @@ def setUp(self): self.output = io.StringIO() sys.stdout = self.output + self._threads = support.threading_setup() self.serv_evt = threading.Event() self.client_evt = threading.Event() self.port = support.find_unused_port() self.serv = smtpd.DebuggingServer((HOST, self.port), ('nowhere', -1)) serv_args = (self.serv, self.serv_evt, self.client_evt) - threading.Thread(target=debugging_server, args=serv_args).start() + self.thread = threading.Thread(target=debugging_server, args=serv_args) + self.thread.start() # wait until server thread has assigned a port number self.serv_evt.wait() @@ -166,6 +172,8 @@ def tearDown(self): self.client_evt.set() # wait for the server thread to terminate self.serv_evt.wait() + self.thread.join() + support.threading_cleanup(*self._threads) # restore sys.stdout sys.stdout = self.old_stdout @@ -261,17 +269,21 @@ def setUp(self): self.output = io.StringIO() sys.stdout = self.output + self._threads = support.threading_setup() self.evt = threading.Event() self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.sock.settimeout(15) self.port = support.bind_port(self.sock) servargs = (self.evt, b"199 no hello for you!\n", self.sock) - threading.Thread(target=server, args=servargs).start() + self.thread = threading.Thread(target=server, args=servargs) + self.thread.start() self.evt.wait() self.evt.clear() def tearDown(self): self.evt.wait() + self.thread.join() + support.threading_cleanup(*self._threads) sys.stdout = self.old_stdout def testFailingHELO(self): @@ -377,12 +389,14 @@ def add_feature(self, feature): class SMTPSimTests(TestCase): def setUp(self): + self._threads = support.threading_setup() self.serv_evt = threading.Event() self.client_evt = threading.Event() self.port = support.find_unused_port() self.serv = SimSMTPServer((HOST, self.port), ('nowhere', -1)) serv_args = (self.serv, self.serv_evt, self.client_evt) - threading.Thread(target=debugging_server, args=serv_args).start() + self.thread = threading.Thread(target=debugging_server, args=serv_args) + self.thread.start() # wait until server thread has assigned a port number self.serv_evt.wait() @@ -393,6 +407,8 @@ def tearDown(self): self.client_evt.set() # wait for the server thread to terminate self.serv_evt.wait() + self.thread.join() + support.threading_cleanup(*self._threads) def testBasic(self): # smoke test