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