예제 #1
0
def test_cwd_path_as_str_no_args(dummy_kwargs, exe_name):
    exe_path = pathlib.Path(exe_name).absolute()
    dummy_kwargs['exe_path'] = exe_path
    dummy_kwargs['args_list'] = []
    context = _run_context.RunContext(**dummy_kwargs)
    assert context.exe_path == exe_path
    exe_path_as_str = str(exe_path)
    assert f'"{exe_path_as_str}" in "{context.absolute_cwd_as_str}"' == context.cmd_as_string
예제 #2
0
def test_cwd_path_as_str(dummy_kwargs, test_cwd):
    test_cwd_path = pathlib.Path(test_cwd)
    dummy_kwargs['cwd'] = test_cwd
    context = _run_context.RunContext(**dummy_kwargs)
    assert test_cwd == context.cwd
    assert isinstance(context.cwd, str)
    assert str(test_cwd_path.absolute()) == context.absolute_cwd_as_str
    assert isinstance(context.absolute_cwd_as_str, str)
예제 #3
0
def test_exe_path_as_str(dummy_kwargs, test_file_name):
    test_file_path = pathlib.Path(test_file_name)
    dummy_kwargs['exe_path'] = test_file_path
    context = _run_context.RunContext(**dummy_kwargs)
    assert test_file_path == context.exe_path
    assert isinstance(context.exe_path, pathlib.Path)
    assert str(test_file_path.absolute()) == context.exe_path_as_str
    assert isinstance(context.exe_path_as_str, str)
예제 #4
0
def test_process_finished(dummy_kwargs):
    command = mock()
    when(command).poll().thenReturn(None).thenReturn(0)
    context = _run_context.RunContext(**dummy_kwargs)
    setattr(context, '_command', command)
    assert not context.process_finished()
    assert context.process_finished()
    verifyNoUnwantedInteractions()
    verifyStubbedInvocationsAreUsed()
예제 #5
0
def test_cwd_path_as_str(dummy_kwargs, exe_name, arg_list):
    exe_path = pathlib.Path(exe_name).absolute()
    dummy_kwargs['exe_path'] = exe_path
    dummy_kwargs['args_list'] = arg_list
    context = _run_context.RunContext(**dummy_kwargs)
    assert context.exe_path == exe_path
    assert context.args_list == arg_list
    exe_path_as_str = str(exe_path)
    arg_list_as_str = ' '.join(arg_list)
    cmd_as_str = ' '.join((exe_path_as_str, arg_list_as_str))
    assert f'"{cmd_as_str}" in "{context.absolute_cwd_as_str}"' == context.cmd_as_string
예제 #6
0
def test_start_process(dummy_kwargs):
    command = mock()
    when(command).run(async_=True)
    context = _run_context.RunContext(**dummy_kwargs)
    setattr(context, '_command', command)
    assert context.start_time == 0
    verifyZeroInteractions()
    context.start_process()
    assert context.start_time != 0
    verifyStubbedInvocationsAreUsed()
    verifyNoUnwantedInteractions()
예제 #7
0
def test_valid_init(dummy_kwargs, optional_arg_name):
    correct_kwargs = dummy_kwargs.copy()
    if optional_arg_name:
        correct_kwargs[optional_arg_name] = []
    _run_context.RunContext(**correct_kwargs)
예제 #8
0
def test_wrong_init_lists_of_string(arg_name, wrong_value, dummy_kwargs):
    wrong_kwargs = dummy_kwargs.copy()
    wrong_kwargs[arg_name] = wrong_value
    with pytest.raises(TypeError):
        _run_context.RunContext(**wrong_kwargs)
예제 #9
0
def test_wrong_init(arg_name, wrong_values, dummy_kwargs):
    for wrong_value in wrong_values:
        wrong_kwargs = dummy_kwargs.copy()
        wrong_kwargs[arg_name] = wrong_value
        with pytest.raises(TypeError):
            _run_context.RunContext(**wrong_kwargs)
예제 #10
0
def test_exe_short_name(dummy_kwargs, exe_name):
    exe_path = pathlib.Path(exe_name).absolute()
    dummy_kwargs['exe_path'] = exe_path
    context = _run_context.RunContext(**dummy_kwargs)
    assert exe_name == context.exe_short_name
예제 #11
0
def test_process_output_as_str(fake_output, dummy_kwargs):
    context = _run_context.RunContext(**dummy_kwargs)
    expected_output_list = ['\n'.join(fake_output) for _ in range(10)]
    context.process_output_chunks = list(expected_output_list)
    assert '\n'.join(expected_output_list) == context.process_output_as_str
예제 #12
0
def test_process_timed_out_process_not_started(dummy_kwargs):
    context = _run_context.RunContext(**dummy_kwargs)
    with pytest.raises(RuntimeError):
        assert context.process_timed_out()
예제 #13
0
def test_process_not_timed_out(dummy_kwargs):
    context = _run_context.RunContext(**dummy_kwargs)
    setattr(context, '_started', True)
    context.start_time = time.monotonic()
    assert not context.process_timed_out()
예제 #14
0
def test_process_timed_out(dummy_kwargs):
    context = _run_context.RunContext(**dummy_kwargs)
    setattr(context, '_started', True)
    assert context.process_timed_out()