[Python-checkins] r88620 - in python/branches/py3k: Lib/poplib.py Lib/test/test_poplib.py Misc/NEWS

giampaolo.rodola python-checkins at python.org
Fri Feb 25 23:28:24 CET 2011


Author: giampaolo.rodola
Date: Fri Feb 25 23:28:24 2011
New Revision: 88620

Log:
Issue 11291: poplib suppresses errors on QUIT.

Modified:
   python/branches/py3k/Lib/poplib.py
   python/branches/py3k/Lib/test/test_poplib.py
   python/branches/py3k/Misc/NEWS

Modified: python/branches/py3k/Lib/poplib.py
==============================================================================
--- python/branches/py3k/Lib/poplib.py	(original)
+++ python/branches/py3k/Lib/poplib.py	Fri Feb 25 23:28:24 2011
@@ -250,15 +250,18 @@
 
     def quit(self):
         """Signoff: commit changes on server, unlock mailbox, close connection."""
-        try:
-            resp = self._shortcmd('QUIT')
-        except error_proto as val:
-            resp = val
-        self.file.close()
-        self.sock.close()
-        del self.file, self.sock
+        resp = self._shortcmd('QUIT')
+        self.close()
         return resp
 
+    def close(self):
+        """Close the connection without assuming anything about it."""
+        if self.file is not None:
+            self.file.close()
+        if self.sock is not None:
+            self.sock.close()
+        self.file = self.sock = None
+
     #__del__ = quit
 
 

Modified: python/branches/py3k/Lib/test/test_poplib.py
==============================================================================
--- python/branches/py3k/Lib/test/test_poplib.py	(original)
+++ python/branches/py3k/Lib/test/test_poplib.py	Fri Feb 25 23:28:24 2011
@@ -108,6 +108,10 @@
     def cmd_apop(self, arg):
         self.push('+OK done nothing.')
 
+    def cmd_quit(self, arg):
+        self.push('+OK closing.')
+        self.close_when_done()
+
 
 class DummyPOP3Server(asyncore.dispatcher, threading.Thread):
 
@@ -165,10 +169,10 @@
     def setUp(self):
         self.server = DummyPOP3Server((HOST, PORT))
         self.server.start()
-        self.client = poplib.POP3(self.server.host, self.server.port)
+        self.client = poplib.POP3(self.server.host, self.server.port, timeout=3)
 
     def tearDown(self):
-        self.client.quit()
+        self.client.close()
         self.server.stop()
 
     def test_getwelcome(self):
@@ -228,6 +232,12 @@
         self.client.uidl()
         self.client.uidl('foo')
 
+    def test_quit(self):
+        resp = self.client.quit()
+        self.assertTrue(resp)
+        self.assertIsNone(self.client.sock)
+        self.assertIsNone(self.client.file)
+
 
 SUPPORTS_SSL = False
 if hasattr(poplib, 'POP3_SSL'):
@@ -274,6 +284,7 @@
             else:
                 DummyPOP3Handler.handle_read(self)
 
+
     class TestPOP3_SSLClass(TestPOP3Class):
         # repeat previous tests by using poplib.POP3_SSL
 

Modified: python/branches/py3k/Misc/NEWS
==============================================================================
--- python/branches/py3k/Misc/NEWS	(original)
+++ python/branches/py3k/Misc/NEWS	Fri Feb 25 23:28:24 2011
@@ -35,6 +35,8 @@
 Library
 -------
 
+- Issue 11291: poplib.POP no longer suppresses errors on quit().
+
 - Issue 11177: asyncore's create_socket() arguments can now be omitted.
 
 - Issue #6064: Add a ``daemon`` keyword argument to the threading.Thread


More information about the Python-checkins mailing list