@@ -33,6 +33,39 @@ def test_assert_python_raises_expect_failure(self):
3333 self .assertIn ('import sys; sys.exit(0)' , error_msg ,
3434 msg = 'unexpected command line.' )
3535
36+ @mock .patch ('subprocess.Popen' )
37+ def test_assert_python_isolated_when_env_not_required (self , mock_popen ):
38+ with mock .patch .object (script_helper ,
39+ '_interpreter_requires_environment' ,
40+ return_value = False ) as mock_ire_func :
41+ mock_popen .side_effect = RuntimeError ('bail out of unittest' )
42+ try :
43+ script_helper ._assert_python (True , '-c' , 'None' )
44+ except RuntimeError as err :
45+ self .assertEqual ('bail out of unittest' , err .args [0 ])
46+ self .assertEqual (1 , mock_popen .call_count )
47+ self .assertEqual (1 , mock_ire_func .call_count )
48+ popen_command = mock_popen .call_args [0 ][0 ]
49+ self .assertEqual (sys .executable , popen_command [0 ])
50+ self .assertIn ('None' , popen_command )
51+ self .assertIn ('-I' , popen_command )
52+ self .assertNotIn ('-E' , popen_command ) # -I overrides this
53+
54+ @mock .patch ('subprocess.Popen' )
55+ def test_assert_python_not_isolated_when_env_is_required (self , mock_popen ):
56+ """Ensure that -I is not passed when the environment is required."""
57+ with mock .patch .object (script_helper ,
58+ '_interpreter_requires_environment' ,
59+ return_value = True ) as mock_ire_func :
60+ mock_popen .side_effect = RuntimeError ('bail out of unittest' )
61+ try :
62+ script_helper ._assert_python (True , '-c' , 'None' )
63+ except RuntimeError as err :
64+ self .assertEqual ('bail out of unittest' , err .args [0 ])
65+ popen_command = mock_popen .call_args [0 ][0 ]
66+ self .assertNotIn ('-I' , popen_command )
67+ self .assertNotIn ('-E' , popen_command )
68+
3669
3770class TestScriptHelperEnvironment (unittest .TestCase ):
3871 """Code coverage for _interpreter_requires_environment()."""
0 commit comments