23
23
24
24
from io import BytesIO , StringIO
25
25
from fileinput import FileInput , hook_encoded
26
- from pathlib import Path
27
26
28
27
from test .support import verbose
29
- from test .support .os_helper import TESTFN
28
+ from test .support .os_helper import TESTFN , FakePath
30
29
from test .support .os_helper import unlink as safe_unlink
31
30
from test .support import os_helper
32
31
from test import support
@@ -151,7 +150,7 @@ def test_buffer_sizes(self):
151
150
print ('6. Inplace' )
152
151
savestdout = sys .stdout
153
152
try :
154
- fi = FileInput (files = (t1 , t2 , t3 , t4 ), inplace = 1 , encoding = "utf-8" )
153
+ fi = FileInput (files = (t1 , t2 , t3 , t4 ), inplace = True , encoding = "utf-8" )
155
154
for line in fi :
156
155
line = line [:- 1 ].upper ()
157
156
print (line )
@@ -256,7 +255,7 @@ def test_detached_stdin_binary_mode(self):
256
255
def test_file_opening_hook (self ):
257
256
try :
258
257
# cannot use openhook and inplace mode
259
- fi = FileInput (inplace = 1 , openhook = lambda f , m : None )
258
+ fi = FileInput (inplace = True , openhook = lambda f , m : None )
260
259
self .fail ("FileInput should raise if both inplace "
261
260
"and openhook arguments are given" )
262
261
except ValueError :
@@ -478,23 +477,23 @@ def test_iteration_buffering(self):
478
477
self .assertRaises (StopIteration , next , fi )
479
478
self .assertEqual (src .linesread , [])
480
479
481
- def test_pathlib_file (self ):
482
- t1 = Path (self .writeTmp ("Pathlib file." ))
480
+ def test_pathlike_file (self ):
481
+ t1 = FakePath (self .writeTmp ("Path-like file." ))
483
482
with FileInput (t1 , encoding = "utf-8" ) as fi :
484
483
line = fi .readline ()
485
- self .assertEqual (line , 'Pathlib file.' )
484
+ self .assertEqual (line , 'Path-like file.' )
486
485
self .assertEqual (fi .lineno (), 1 )
487
486
self .assertEqual (fi .filelineno (), 1 )
488
487
self .assertEqual (fi .filename (), os .fspath (t1 ))
489
488
490
- def test_pathlib_file_inplace (self ):
491
- t1 = Path (self .writeTmp ('Pathlib file.' ))
489
+ def test_pathlike_file_inplace (self ):
490
+ t1 = FakePath (self .writeTmp ('Path-like file.' ))
492
491
with FileInput (t1 , inplace = True , encoding = "utf-8" ) as fi :
493
492
line = fi .readline ()
494
- self .assertEqual (line , 'Pathlib file.' )
493
+ self .assertEqual (line , 'Path-like file.' )
495
494
print ('Modified %s' % line )
496
495
with open (t1 , encoding = "utf-8" ) as f :
497
- self .assertEqual (f .read (), 'Modified Pathlib file.\n ' )
496
+ self .assertEqual (f .read (), 'Modified Path-like file.\n ' )
498
497
499
498
500
499
class MockFileInput :
@@ -855,29 +854,29 @@ def setUp(self):
855
854
self .fake_open = InvocationRecorder ()
856
855
857
856
def test_empty_string (self ):
858
- self .do_test_use_builtin_open ("" , 1 )
857
+ self .do_test_use_builtin_open_text ("" , "r" )
859
858
860
859
def test_no_ext (self ):
861
- self .do_test_use_builtin_open ("abcd" , 2 )
860
+ self .do_test_use_builtin_open_text ("abcd" , "r" )
862
861
863
862
@unittest .skipUnless (gzip , "Requires gzip and zlib" )
864
863
def test_gz_ext_fake (self ):
865
864
original_open = gzip .open
866
865
gzip .open = self .fake_open
867
866
try :
868
- result = fileinput .hook_compressed ("test.gz" , "3 " )
867
+ result = fileinput .hook_compressed ("test.gz" , "r " )
869
868
finally :
870
869
gzip .open = original_open
871
870
872
871
self .assertEqual (self .fake_open .invocation_count , 1 )
873
- self .assertEqual (self .fake_open .last_invocation , (("test.gz" , "3 " ), {}))
872
+ self .assertEqual (self .fake_open .last_invocation , (("test.gz" , "r " ), {}))
874
873
875
874
@unittest .skipUnless (gzip , "Requires gzip and zlib" )
876
875
def test_gz_with_encoding_fake (self ):
877
876
original_open = gzip .open
878
877
gzip .open = lambda filename , mode : io .BytesIO (b'Ex-binary string' )
879
878
try :
880
- result = fileinput .hook_compressed ("test.gz" , "3 " , encoding = "utf-8" )
879
+ result = fileinput .hook_compressed ("test.gz" , "r " , encoding = "utf-8" )
881
880
finally :
882
881
gzip .open = original_open
883
882
self .assertEqual (list (result ), ['Ex-binary string' ])
@@ -887,23 +886,40 @@ def test_bz2_ext_fake(self):
887
886
original_open = bz2 .BZ2File
888
887
bz2 .BZ2File = self .fake_open
889
888
try :
890
- result = fileinput .hook_compressed ("test.bz2" , "4 " )
889
+ result = fileinput .hook_compressed ("test.bz2" , "r " )
891
890
finally :
892
891
bz2 .BZ2File = original_open
893
892
894
893
self .assertEqual (self .fake_open .invocation_count , 1 )
895
- self .assertEqual (self .fake_open .last_invocation , (("test.bz2" , "4 " ), {}))
894
+ self .assertEqual (self .fake_open .last_invocation , (("test.bz2" , "r " ), {}))
896
895
897
896
def test_blah_ext (self ):
898
- self .do_test_use_builtin_open ("abcd.blah" , "5 " )
897
+ self .do_test_use_builtin_open_binary ("abcd.blah" , "rb " )
899
898
900
899
def test_gz_ext_builtin (self ):
901
- self .do_test_use_builtin_open ("abcd.Gz" , "6 " )
900
+ self .do_test_use_builtin_open_binary ("abcd.Gz" , "rb " )
902
901
903
902
def test_bz2_ext_builtin (self ):
904
- self .do_test_use_builtin_open ("abcd.Bz2" , "7 " )
903
+ self .do_test_use_builtin_open_binary ("abcd.Bz2" , "rb " )
905
904
906
- def do_test_use_builtin_open (self , filename , mode ):
905
+ def test_binary_mode_encoding (self ):
906
+ self .do_test_use_builtin_open_binary ("abcd" , "rb" )
907
+
908
+ def test_text_mode_encoding (self ):
909
+ self .do_test_use_builtin_open_text ("abcd" , "r" )
910
+
911
+ def do_test_use_builtin_open_binary (self , filename , mode ):
912
+ original_open = self .replace_builtin_open (self .fake_open )
913
+ try :
914
+ result = fileinput .hook_compressed (filename , mode )
915
+ finally :
916
+ self .replace_builtin_open (original_open )
917
+
918
+ self .assertEqual (self .fake_open .invocation_count , 1 )
919
+ self .assertEqual (self .fake_open .last_invocation ,
920
+ ((filename , mode ), {'encoding' : None , 'errors' : None }))
921
+
922
+ def do_test_use_builtin_open_text (self , filename , mode ):
907
923
original_open = self .replace_builtin_open (self .fake_open )
908
924
try :
909
925
result = fileinput .hook_compressed (filename , mode )
0 commit comments