def test_run_with_args_failure( mock_process_command: MagicMock, mock_is_windows: bool, ): # Setup input_data = "asdf" finish_string = "We are done!" status_update = MagicMock() lines = ["line 1", "line 2", "post line"] def side_effect(_, __, read_callback): for line in lines: read_callback(line) mock_process_command.side_effect = side_effect # Run with pytest.raises(RuntimeError) as error: claris_randomizer._run_with_args([], input_data, finish_string, status_update) # Assert mock_process_command.assert_called_once_with( [] if mock_is_windows else ["mono"], input_data, ANY) status_update.assert_has_calls([ call("line 1"), call("line 2"), call("post line"), ]) assert str( error.value ) == "External tool did not send '{}'. Did something happen?".format( finish_string)
def test_run_with_args_success( mock_process_command: MagicMock, mock_is_windows: bool, ): # Setup args = [MagicMock(), MagicMock()] finish_string = "We are done!" status_update = MagicMock() lines = ["line 1", "line 2", finish_string, "post line"] def side_effect(_, __, read_callback): for line in lines: read_callback(line) mock_process_command.side_effect = side_effect # Run claris_randomizer._run_with_args(args, "", finish_string, status_update) # Assert mock_process_command.assert_called_once_with( ([] if mock_is_windows else ["mono"]) + [str(x) for x in args], "", ANY) status_update.assert_has_calls([ call("line 1"), call("line 2"), call(finish_string), ])
def test_run_with_args_failure(mock_popen: MagicMock, ): # Setup finish_string = "We are done!" process = mock_popen.return_value.__enter__.return_value process.stdout = [" line 1"] # Run with pytest.raises(CustomException): claris_randomizer._run_with_args([], finish_string, CustomException.do_raise) # Assert mock_popen.assert_called_once_with([], stdout=subprocess.PIPE, bufsize=0, universal_newlines=True) process.kill.assert_called_once_with()
def test_run_with_args_success(mock_popen: MagicMock, ): # Setup args = [MagicMock(), MagicMock()] finish_string = "We are done!" status_update = MagicMock() process = mock_popen.return_value.__enter__.return_value process.stdout = [ " line 1", "line 2 ", " ", finish_string, " post line " ] # Run claris_randomizer._run_with_args(args, finish_string, status_update) # Assert mock_popen.assert_called_once_with([str(x) for x in args], stdout=subprocess.PIPE, bufsize=0, universal_newlines=True) status_update.assert_has_calls([ call("line 1"), call("line 2"), call(finish_string), ]) process.kill.assert_not_called()