Commit 918e2d48 authored by Brett Cannon's avatar Brett Cannon

Clean up socket closing in test_ftplib.

parent 384917a9
...@@ -107,7 +107,7 @@ class DummyFTPHandler(asynchat.async_chat): ...@@ -107,7 +107,7 @@ class DummyFTPHandler(asynchat.async_chat):
self.push('200 active data connection established') self.push('200 active data connection established')
def cmd_pasv(self, arg): def cmd_pasv(self, arg):
sock = socket.socket() with socket.socket() as sock:
sock.bind((self.socket.getsockname()[0], 0)) sock.bind((self.socket.getsockname()[0], 0))
sock.listen(5) sock.listen(5)
sock.settimeout(10) sock.settimeout(10)
...@@ -125,7 +125,7 @@ class DummyFTPHandler(asynchat.async_chat): ...@@ -125,7 +125,7 @@ class DummyFTPHandler(asynchat.async_chat):
self.push('200 active data connection established') self.push('200 active data connection established')
def cmd_epsv(self, arg): def cmd_epsv(self, arg):
sock = socket.socket(socket.AF_INET6) with socket.socket(socket.AF_INET6) as sock:
sock.bind((self.socket.getsockname()[0], 0)) sock.bind((self.socket.getsockname()[0], 0))
sock.listen(5) sock.listen(5)
sock.settimeout(10) sock.settimeout(10)
...@@ -549,9 +549,10 @@ class TestFTPClass(TestCase): ...@@ -549,9 +549,10 @@ class TestFTPClass(TestCase):
self.assertEqual(''.join(l), LIST_DATA.replace('\r\n', '')) self.assertEqual(''.join(l), LIST_DATA.replace('\r\n', ''))
def test_makeport(self): def test_makeport(self):
self.client.makeport() with self.client.makeport():
# IPv4 is in use, just make sure send_eprt has not been used # IPv4 is in use, just make sure send_eprt has not been used
self.assertEqual(self.server.handler_instance.last_received_cmd, 'port') self.assertEqual(self.server.handler_instance.last_received_cmd,
'port')
def test_makepasv(self): def test_makepasv(self):
host, port = self.client.makepasv() host, port = self.client.makepasv()
...@@ -634,8 +635,9 @@ class TestIPv6Environment(TestCase): ...@@ -634,8 +635,9 @@ class TestIPv6Environment(TestCase):
self.assertEqual(self.client.af, socket.AF_INET6) self.assertEqual(self.client.af, socket.AF_INET6)
def test_makeport(self): def test_makeport(self):
self.client.makeport() with self.client.makeport():
self.assertEqual(self.server.handler_instance.last_received_cmd, 'eprt') self.assertEqual(self.server.handler_instance.last_received_cmd,
'eprt')
def test_makepasv(self): def test_makepasv(self):
host, port = self.client.makepasv() host, port = self.client.makepasv()
...@@ -691,23 +693,20 @@ class TestTLS_FTPClass(TestCase): ...@@ -691,23 +693,20 @@ class TestTLS_FTPClass(TestCase):
def test_data_connection(self): def test_data_connection(self):
# clear text # clear text
sock = self.client.transfercmd('list') with self.client.transfercmd('list') as sock:
self.assertNotIsInstance(sock, ssl.SSLSocket) self.assertNotIsInstance(sock, ssl.SSLSocket)
sock.close()
self.assertEqual(self.client.voidresp(), "226 transfer complete") self.assertEqual(self.client.voidresp(), "226 transfer complete")
# secured, after PROT P # secured, after PROT P
self.client.prot_p() self.client.prot_p()
sock = self.client.transfercmd('list') with self.client.transfercmd('list') as sock:
self.assertIsInstance(sock, ssl.SSLSocket) self.assertIsInstance(sock, ssl.SSLSocket)
sock.close()
self.assertEqual(self.client.voidresp(), "226 transfer complete") self.assertEqual(self.client.voidresp(), "226 transfer complete")
# PROT C is issued, the connection must be in cleartext again # PROT C is issued, the connection must be in cleartext again
self.client.prot_c() self.client.prot_c()
sock = self.client.transfercmd('list') with self.client.transfercmd('list') as sock:
self.assertNotIsInstance(sock, ssl.SSLSocket) self.assertNotIsInstance(sock, ssl.SSLSocket)
sock.close()
self.assertEqual(self.client.voidresp(), "226 transfer complete") self.assertEqual(self.client.voidresp(), "226 transfer complete")
def test_login(self): def test_login(self):
...@@ -748,10 +747,9 @@ class TestTLS_FTPClass(TestCase): ...@@ -748,10 +747,9 @@ class TestTLS_FTPClass(TestCase):
self.assertIsInstance(self.client.sock, ssl.SSLSocket) self.assertIsInstance(self.client.sock, ssl.SSLSocket)
self.client.prot_p() self.client.prot_p()
sock = self.client.transfercmd('list') with self.client.transfercmd('list') as sock:
self.assertIs(sock.context, ctx) self.assertIs(sock.context, ctx)
self.assertIsInstance(sock, ssl.SSLSocket) self.assertIsInstance(sock, ssl.SSLSocket)
sock.close()
class TestTimeouts(TestCase): class TestTimeouts(TestCase):
...@@ -769,6 +767,7 @@ class TestTimeouts(TestCase): ...@@ -769,6 +767,7 @@ class TestTimeouts(TestCase):
def tearDown(self): def tearDown(self):
self.evt.wait() self.evt.wait()
self.sock.close()
def server(self, evt, serv): def server(self, evt, serv):
# This method sets the evt 3 times: # This method sets the evt 3 times:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment