34
34
DEFAULT_ENCODING = 'utf-8'
35
35
# the dummy data returned by server over the data channel when
36
36
# RETR, LIST, NLST, MLSD commands are issued
37
- RETR_DATA = 'abcde12345 \ r\n ' * 1000 + 'non-ascii char \xAE \r \n '
37
+ RETR_DATA = 'abcde \xB9 \xB2 \xB3 \xA4 \xA6 \ r\n ' * 1000
38
38
LIST_DATA = 'foo\r \n bar\r \n non-ascii char \xAE \r \n '
39
39
NLST_DATA = 'foo\r \n bar\r \n non-ascii char \xAE \r \n '
40
40
MLSD_DATA = ("type=cdir;perm=el;unique==keVO1+ZF4; test\r \n "
@@ -69,11 +69,11 @@ class DummyDTPHandler(asynchat.async_chat):
69
69
def __init__ (self , conn , baseclass ):
70
70
asynchat .async_chat .__init__ (self , conn )
71
71
self .baseclass = baseclass
72
- self .baseclass .last_received_data = ''
72
+ self .baseclass .last_received_data = bytearray ()
73
73
self .encoding = baseclass .encoding
74
74
75
75
def handle_read (self ):
76
- new_data = self .recv (1024 ). decode ( self . encoding , 'replace' )
76
+ new_data = self .recv (1024 )
77
77
self .baseclass .last_received_data += new_data
78
78
79
79
def handle_close (self ):
@@ -109,7 +109,7 @@ def __init__(self, conn, encoding=DEFAULT_ENCODING):
109
109
self .in_buffer = []
110
110
self .dtp = None
111
111
self .last_received_cmd = None
112
- self .last_received_data = ''
112
+ self .last_received_data = bytearray ()
113
113
self .next_response = ''
114
114
self .next_data = None
115
115
self .rest = None
@@ -592,19 +592,17 @@ def test_abort(self):
592
592
self .client .abort ()
593
593
594
594
def test_retrbinary (self ):
595
- def callback (data ):
596
- received .append (data .decode (self .client .encoding ))
597
595
received = []
598
- self .client .retrbinary ('retr' , callback )
599
- self .check_data ('' .join (received ), RETR_DATA )
596
+ self .client .retrbinary ('retr' , received .append )
597
+ self .check_data (b'' .join (received ),
598
+ RETR_DATA .encode (self .client .encoding ))
600
599
601
600
def test_retrbinary_rest (self ):
602
- def callback (data ):
603
- received .append (data .decode (self .client .encoding ))
604
601
for rest in (0 , 10 , 20 ):
605
602
received = []
606
- self .client .retrbinary ('retr' , callback , rest = rest )
607
- self .check_data ('' .join (received ), RETR_DATA [rest :])
603
+ self .client .retrbinary ('retr' , received .append , rest = rest )
604
+ self .check_data (b'' .join (received ),
605
+ RETR_DATA [rest :].encode (self .client .encoding ))
608
606
609
607
def test_retrlines (self ):
610
608
received = []
@@ -614,7 +612,8 @@ def test_retrlines(self):
614
612
def test_storbinary (self ):
615
613
f = io .BytesIO (RETR_DATA .encode (self .client .encoding ))
616
614
self .client .storbinary ('stor' , f )
617
- self .check_data (self .server .handler_instance .last_received_data , RETR_DATA )
615
+ self .check_data (self .server .handler_instance .last_received_data ,
616
+ RETR_DATA .encode (self .server .encoding ))
618
617
# test new callback arg
619
618
flag = []
620
619
f .seek (0 )
@@ -633,7 +632,8 @@ def test_storlines(self):
633
632
data = RETR_DATA .replace ('\r \n ' , '\n ' ).encode (self .client .encoding )
634
633
f = io .BytesIO (data )
635
634
self .client .storlines ('stor' , f )
636
- self .check_data (self .server .handler_instance .last_received_data , RETR_DATA )
635
+ self .check_data (self .server .handler_instance .last_received_data ,
636
+ RETR_DATA .encode (self .server .encoding ))
637
637
# test new callback arg
638
638
flag = []
639
639
f .seek (0 )
@@ -651,7 +651,7 @@ def test_nlst(self):
651
651
652
652
def test_dir (self ):
653
653
l = []
654
- self .client .dir (lambda x : l .append ( x ) )
654
+ self .client .dir (l .append )
655
655
self .assertEqual ('' .join (l ), LIST_DATA .replace ('\r \n ' , '' ))
656
656
657
657
def test_mlsd (self ):
@@ -891,12 +891,10 @@ def test_makepasv(self):
891
891
892
892
def test_transfer (self ):
893
893
def retr ():
894
- def callback (data ):
895
- received .append (data .decode (self .client .encoding ))
896
894
received = []
897
- self .client .retrbinary ('retr' , callback )
898
- self .assertEqual (len ( '' .join (received )), len ( RETR_DATA ))
899
- self . assertEqual ( '' . join ( received ), RETR_DATA )
895
+ self .client .retrbinary ('retr' , received . append )
896
+ self .assertEqual (b '' .join (received ),
897
+ RETR_DATA . encode ( self . client . encoding ) )
900
898
self .client .set_pasv (True )
901
899
retr ()
902
900
self .client .set_pasv (False )
0 commit comments