Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 8a3d2af

Browse files
bpo-26543: Fix IMAP4.noop when debug mode is enabled (GH-15206)
1 parent fe5dd78 commit 8a3d2af

3 files changed

Lines changed: 21 additions & 7 deletions

File tree

Lib/imaplib.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1251,13 +1251,12 @@ def _mesg(self, s, secs=None):
12511251
sys.stderr.write(' %s.%02d %s\n' % (tm, (secs*100)%100, s))
12521252
sys.stderr.flush()
12531253

1254-
def _dump_ur(self, dict):
1255-
# Dump untagged responses (in `dict').
1256-
l = dict.items()
1257-
if not l: return
1258-
t = '\n\t\t'
1259-
l = map(lambda x:'%s: "%s"' % (x[0], x[1][0] and '" "'.join(x[1]) or ''), l)
1260-
self._mesg('untagged responses dump:%s%s' % (t, t.join(l)))
1254+
def _dump_ur(self, untagged_resp_dict):
1255+
if not untagged_resp_dict:
1256+
return
1257+
items = (f'{key}: {value!r}'
1258+
for key, value in untagged_resp_dict.items())
1259+
self._mesg('untagged responses dump:' + '\n\t\t'.join(items))
12611260

12621261
def _log(self, line):
12631262
# Keep log of last `_cmd_log_len' interactions for debugging.

Lib/test/test_imaplib.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -933,6 +933,20 @@ def test_with_statement_logout(self):
933933
self.assertIsNone(server.logged)
934934
self.assertIsNone(server.logged)
935935

936+
@threading_helper.reap_threads
937+
@cpython_only
938+
def test_dump_ur(self):
939+
# See: http://bugs.python.org/issue26543
940+
untagged_resp_dict = {'READ-WRITE': [b'']}
941+
942+
with self.reaped_server(SimpleIMAPHandler) as server:
943+
with self.imap_class(*server.server_address) as imap:
944+
with mock.patch.object(imap, '_mesg') as mock_mesg:
945+
imap._dump_ur(untagged_resp_dict)
946+
mock_mesg.assert_called_with(
947+
"untagged responses dump:READ-WRITE: [b'']"
948+
)
949+
936950

937951
@unittest.skipUnless(ssl, "SSL not available")
938952
class ThreadedNetworkedTestsSSL(ThreadedNetworkedTests):
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix :meth:`IMAP4.noop()` when debug mode is enabled (ex: ``imaplib.Debug = 3``).

0 commit comments

Comments
 (0)