diff options
author | Sanyam Khurana <8039608+CuriousLearner@users.noreply.github.com> | 2020-06-02 06:47:45 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-02 03:17:45 +0200 |
commit | 8a3d2af997e3702eac4c5b012537be39ada36888 (patch) | |
tree | 4dd5ab95ff423850adce57db91b67560503c1e01 | |
parent | fe5dd78182dbf4937bcc2b113ca7526bfad0192b (diff) | |
download | cpython-8a3d2af997e3702eac4c5b012537be39ada36888.tar.gz cpython-8a3d2af997e3702eac4c5b012537be39ada36888.zip |
bpo-26543: Fix IMAP4.noop when debug mode is enabled (GH-15206)
-rw-r--r-- | Lib/imaplib.py | 13 | ||||
-rw-r--r-- | Lib/test/test_imaplib.py | 14 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2019-08-11-16-28-03.bpo-26543.X-TJZO.rst | 1 |
3 files changed, 21 insertions, 7 deletions
diff --git a/Lib/imaplib.py b/Lib/imaplib.py index d9720f20c39..73184396d89 100644 --- a/Lib/imaplib.py +++ b/Lib/imaplib.py @@ -1251,13 +1251,12 @@ class IMAP4: sys.stderr.write(' %s.%02d %s\n' % (tm, (secs*100)%100, s)) sys.stderr.flush() - def _dump_ur(self, dict): - # Dump untagged responses (in `dict'). - l = dict.items() - if not l: return - t = '\n\t\t' - l = map(lambda x:'%s: "%s"' % (x[0], x[1][0] and '" "'.join(x[1]) or ''), l) - self._mesg('untagged responses dump:%s%s' % (t, t.join(l))) + def _dump_ur(self, untagged_resp_dict): + if not untagged_resp_dict: + return + items = (f'{key}: {value!r}' + for key, value in untagged_resp_dict.items()) + self._mesg('untagged responses dump:' + '\n\t\t'.join(items)) def _log(self, line): # Keep log of last `_cmd_log_len' interactions for debugging. diff --git a/Lib/test/test_imaplib.py b/Lib/test/test_imaplib.py index 0fcc1fb99a2..f93efba7949 100644 --- a/Lib/test/test_imaplib.py +++ b/Lib/test/test_imaplib.py @@ -933,6 +933,20 @@ class ThreadedNetworkedTests(unittest.TestCase): self.assertIsNone(server.logged) self.assertIsNone(server.logged) + @threading_helper.reap_threads + @cpython_only + def test_dump_ur(self): + # See: http://bugs.python.org/issue26543 + untagged_resp_dict = {'READ-WRITE': [b'']} + + with self.reaped_server(SimpleIMAPHandler) as server: + with self.imap_class(*server.server_address) as imap: + with mock.patch.object(imap, '_mesg') as mock_mesg: + imap._dump_ur(untagged_resp_dict) + mock_mesg.assert_called_with( + "untagged responses dump:READ-WRITE: [b'']" + ) + @unittest.skipUnless(ssl, "SSL not available") class ThreadedNetworkedTestsSSL(ThreadedNetworkedTests): diff --git a/Misc/NEWS.d/next/Library/2019-08-11-16-28-03.bpo-26543.X-TJZO.rst b/Misc/NEWS.d/next/Library/2019-08-11-16-28-03.bpo-26543.X-TJZO.rst new file mode 100644 index 00000000000..8715b8d79ca --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-08-11-16-28-03.bpo-26543.X-TJZO.rst @@ -0,0 +1 @@ +Fix :meth:`IMAP4.noop()` when debug mode is enabled (ex: ``imaplib.Debug = 3``). |