Skip to content

Commit 81faa3c

Browse files
committed
issue34138: fix implementation of utf8 append and tests
1 parent 5a92499 commit 81faa3c

File tree

1 file changed

+20
-9
lines changed

1 file changed

+20
-9
lines changed

Lib/test/test_imaplib.py

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,11 @@ def cmd_AUTHENTICATE(self, tag, args):
311311
self._send_tagged(tag, 'OK', 'FAKEAUTH successful')
312312
def cmd_APPEND(self, tag, args):
313313
self._send_textline('+')
314-
self.server.response = yield
314+
self.server.response = args
315+
literal = yield
316+
self.server.response.append(literal)
317+
literal = yield
318+
self.server.response.append(literal)
315319
self._send_tagged(tag, 'OK', 'okay')
316320
client, server = self._setup(UTF8AppendServer)
317321
self.assertEqual(client._encoding, 'ascii')
@@ -322,10 +326,13 @@ def cmd_APPEND(self, tag, args):
322326
self.assertEqual(code, 'OK')
323327
self.assertEqual(client._encoding, 'utf-8')
324328
msg_string = 'Subject: üñí©öðé'
325-
typ, data = client.append(None, None, None, msg_string.encode('utf-8'))
329+
typ, data = client.append(
330+
None, None, None, (msg_string + '\n').encode('utf-8'))
326331
self.assertEqual(typ, 'OK')
327332
self.assertEqual(server.response,
328-
('UTF8 (%s)\r\n' % msg_string).encode('utf-8'))
333+
['INBOX', 'UTF8',
334+
'(~{25}', ('%s\r\n' % msg_string).encode('utf-8'),
335+
b')\r\n' ])
329336

330337
def test_search_disallows_charset_in_utf8_mode(self):
331338
class UTF8Server(SimpleIMAPHandler):
@@ -759,7 +766,11 @@ def test_enable_UTF8_True_append(self):
759766
class UTF8AppendServer(self.UTF8Server):
760767
def cmd_APPEND(self, tag, args):
761768
self._send_textline('+')
762-
self.server.response = yield
769+
self.server.response = args
770+
literal = yield
771+
self.server.response.append(literal)
772+
literal = yield
773+
self.server.response.append(literal)
763774
self._send_tagged(tag, 'OK', 'okay')
764775

765776
with self.reaped_pair(UTF8AppendServer) as (server, client):
@@ -773,12 +784,12 @@ def cmd_APPEND(self, tag, args):
773784
self.assertEqual(client._encoding, 'utf-8')
774785
msg_string = 'Subject: üñí©öðé'
775786
typ, data = client.append(
776-
None, None, None, msg_string.encode('utf-8'))
787+
None, None, None, (msg_string + '\n').encode('utf-8'))
777788
self.assertEqual(typ, 'OK')
778-
self.assertEqual(
779-
server.response,
780-
('UTF8 (%s)\r\n' % msg_string).encode('utf-8')
781-
)
789+
self.assertEqual(server.response,
790+
['INBOX', 'UTF8',
791+
'(~{25}', ('%s\r\n' % msg_string).encode('utf-8'),
792+
b')\r\n' ])
782793

783794
# XXX also need a test that makes sure that the Literal and Untagged_status
784795
# regexes uses unicode in UTF8 mode instead of the default ASCII.

0 commit comments

Comments
 (0)