@@ -17,51 +17,90 @@ def setUp(self):
1717 self .temp_file = support .TESTFN
1818 self .addCleanup (support .unlink , support .TESTFN )
1919
20- def pathfix (self , shebang , pathfix_flags ):
20+ def pathfix (self , shebang , pathfix_flags , exitcode = 0 , stdout = '' , stderr = '' ):
2121 with open (self .temp_file , 'w' , encoding = 'utf8' ) as f :
2222 f .write (f'{ shebang } \n ' + 'print("Hello world")\n ' )
2323
2424 proc = subprocess .run (
2525 [sys .executable , self .script ,
2626 * pathfix_flags , '-n' , self .temp_file ],
27- capture_output = True )
28- self .assertEqual (proc .returncode , 0 , proc )
27+ capture_output = True , text = 1 )
28+
29+ if stdout == '' and proc .returncode == 0 :
30+ stdout = f'{ self .temp_file } : updating\n '
31+ self .assertEqual (proc .returncode , exitcode , proc )
32+ self .assertEqual (proc .stdout , stdout , proc )
33+ self .assertEqual (proc .stderr , stderr , proc )
2934
3035 with open (self .temp_file , 'r' , encoding = 'utf8' ) as f :
3136 output = f .read ()
3237
3338 lines = output .split ('\n ' )
3439 self .assertEqual (lines [1 :], ['print("Hello world")' , '' ])
35- shebang = lines [0 ]
36- return shebang
40+ new_shebang = lines [0 ]
41+
42+ if proc .returncode != 0 :
43+ self .assertEqual (shebang , new_shebang )
44+
45+ return new_shebang
3746
3847 def test_pathfix (self ):
3948 self .assertEqual (
4049 self .pathfix (
4150 '#! /usr/bin/env python' ,
42- ['-i' , '/usr/bin/python3' ,]),
43- '#! /usr/bin/python3' ,
44- )
51+ ['-i' , '/usr/bin/python3' ]),
52+ '#! /usr/bin/python3' )
4553 self .assertEqual (
4654 self .pathfix (
4755 '#! /usr/bin/env python -R' ,
48- ['-i' , '/usr/bin/python3' , ]),
49- '#! /usr/bin/python3' ,
50- )
56+ ['-i' , '/usr/bin/python3' ]),
57+ '#! /usr/bin/python3' )
5158
5259 def test_pathfix_keeping_flags (self ):
5360 self .assertEqual (
5461 self .pathfix (
5562 '#! /usr/bin/env python -R' ,
56- ['-i' , '/usr/bin/python3' , '-k' ,]),
57- '#! /usr/bin/python3 -R' ,
58- )
63+ ['-i' , '/usr/bin/python3' , '-k' ]),
64+ '#! /usr/bin/python3 -R' )
5965 self .assertEqual (
6066 self .pathfix (
6167 '#! /usr/bin/env python' ,
62- ['-i' , '/usr/bin/python3' , '-k' ,]),
63- '#! /usr/bin/python3' ,
64- )
68+ ['-i' , '/usr/bin/python3' , '-k' ]),
69+ '#! /usr/bin/python3' )
70+
71+ def test_pathfix_adding_flag (self ):
72+ self .assertEqual (
73+ self .pathfix (
74+ '#! /usr/bin/env python' ,
75+ ['-i' , '/usr/bin/python3' , '-a' , 's' ]),
76+ '#! /usr/bin/python3 -s' )
77+ self .assertEqual (
78+ self .pathfix (
79+ '#! /usr/bin/env python -S' ,
80+ ['-i' , '/usr/bin/python3' , '-a' , 's' ]),
81+ '#! /usr/bin/python3 -s' )
82+ self .assertEqual (
83+ self .pathfix (
84+ '#! /usr/bin/env python -V' ,
85+ ['-i' , '/usr/bin/python3' , '-a' , 'v' , '-k' ]),
86+ '#! /usr/bin/python3 -vV' )
87+ self .assertEqual (
88+ self .pathfix (
89+ '#! /usr/bin/env python' ,
90+ ['-i' , '/usr/bin/python3' , '-a' , 'Rs' ]),
91+ '#! /usr/bin/python3 -Rs' )
92+ self .assertEqual (
93+ self .pathfix (
94+ '#! /usr/bin/env python -W default' ,
95+ ['-i' , '/usr/bin/python3' , '-a' , 's' , '-k' ]),
96+ '#! /usr/bin/python3 -sW default' )
97+
98+ def test_pathfix_adding_errors (self ):
99+ self .pathfix (
100+ '#! /usr/bin/env python -E' ,
101+ ['-i' , '/usr/bin/python3' , '-a' , 'W default' , '-k' ],
102+ exitcode = 2 ,
103+ stderr = "-a option doesn't support whitespaces" )
65104
66105
67106if __name__ == '__main__' :
0 commit comments