Add missing test coverage.

This commit is contained in:
Dan Helfman 2020-05-14 23:21:43 -07:00
parent 2ddf38f99c
commit 3e5a19d95a
2 changed files with 30 additions and 0 deletions

View file

@ -87,6 +87,35 @@ def test_log_outputs_skips_error_output_in_exception_for_process_with_none_stdou
assert not error.value.output assert not error.value.output
def test_log_outputs_kills_other_processes_when_one_errors():
flexmock(module.logger).should_receive('log')
flexmock(module).should_receive('exit_code_indicates_error').and_return(True)
flexmock(module).should_receive('command_for_process').and_return('grep')
process = subprocess.Popen(['grep'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
other_process = subprocess.Popen(
['watch', 'true'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT
)
flexmock(module).should_receive('output_buffer_for_process').with_args(process, ()).and_return(
process.stdout
)
flexmock(module).should_receive('output_buffer_for_process').with_args(
other_process, ()
).and_return(other_process.stdout)
flexmock(other_process).should_receive('kill').once()
with pytest.raises(subprocess.CalledProcessError) as error:
module.log_outputs(
(process, other_process),
exclude_stdouts=(),
output_log_level=logging.INFO,
borg_local_path='borg',
)
assert error.value.returncode == 2
assert error.value.output
def test_log_outputs_truncates_long_error_output(): def test_log_outputs_truncates_long_error_output():
flexmock(module).ERROR_OUTPUT_MAX_LINE_COUNT = 0 flexmock(module).ERROR_OUTPUT_MAX_LINE_COUNT = 0
flexmock(module.logger).should_receive('log') flexmock(module.logger).should_receive('log')

View file

@ -21,6 +21,7 @@ from borgmatic import execute as module
(flexmock(args=['grep']), 0, 'borg', False), (flexmock(args=['grep']), 0, 'borg', False),
(flexmock(args=['borg']), 0, 'borg', False), (flexmock(args=['borg']), 0, 'borg', False),
(flexmock(args=['borg1']), 0, 'borg1', False), (flexmock(args=['borg1']), 0, 'borg1', False),
(flexmock(args=['borg']), None, None, False),
), ),
) )
def test_exit_code_indicates_error_respects_exit_code_and_borg_local_path( def test_exit_code_indicates_error_respects_exit_code_and_borg_local_path(