123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- import pytest
- from flexmock import flexmock
- from borgmatic import signals as module
- def test_handle_signal_forwards_to_subprocesses():
- signal_number = 100
- frame = flexmock(f_back=flexmock(f_code=flexmock(co_name='something')))
- process_group = flexmock()
- flexmock(module.os).should_receive('getpgrp').and_return(process_group)
- flexmock(module.os).should_receive('killpg').with_args(process_group, signal_number).once()
- module.handle_signal(signal_number, frame)
- def test_handle_signal_bails_on_recursion():
- signal_number = 100
- frame = flexmock(f_back=flexmock(f_code=flexmock(co_name='handle_signal')))
- flexmock(module.os).should_receive('getpgrp').never()
- flexmock(module.os).should_receive('killpg').never()
- module.handle_signal(signal_number, frame)
- def test_handle_signal_exits_on_sigterm():
- signal_number = module.signal.SIGTERM
- frame = flexmock(f_back=flexmock(f_code=flexmock(co_name='something')))
- flexmock(module.os).should_receive('getpgrp').and_return(flexmock())
- flexmock(module.os).should_receive('killpg')
- flexmock(module.sys).should_receive('exit').with_args(
- module.EXIT_CODE_FROM_SIGNAL + signal_number
- ).once()
- module.handle_signal(signal_number, frame)
- def test_handle_signal_raises_on_sigint():
- signal_number = module.signal.SIGINT
- frame = flexmock(f_back=flexmock(f_code=flexmock(co_name='something')))
- process_group = flexmock()
- flexmock(module.os).should_receive('getpgrp').and_return(process_group)
- flexmock(module.os).should_receive('killpg').with_args(process_group, module.signal.SIGINT)
- flexmock(module.os).should_receive('killpg').with_args(process_group, module.signal.SIGTERM)
- flexmock(module.sys).should_receive('exit').never()
- with pytest.raises(KeyboardInterrupt):
- module.handle_signal(signal_number, frame)
- def test_configure_signals_installs_signal_handlers():
- flexmock(module.signal).should_receive('signal').at_least().once()
- module.configure_signals()
|