test_signals.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from flexmock import flexmock
  2. from borgmatic import signals as module
  3. def test_handle_signal_forwards_to_subprocesses():
  4. signal_number = 100
  5. frame = flexmock(f_back=flexmock(f_code=flexmock(co_name='something')))
  6. process_group = flexmock()
  7. flexmock(module.os).should_receive('getpgrp').and_return(process_group)
  8. flexmock(module.os).should_receive('killpg').with_args(process_group, signal_number).once()
  9. module.handle_signal(signal_number, frame)
  10. def test_handle_signal_bails_on_recursion():
  11. signal_number = 100
  12. frame = flexmock(f_back=flexmock(f_code=flexmock(co_name='handle_signal')))
  13. flexmock(module.os).should_receive('getpgrp').never()
  14. flexmock(module.os).should_receive('killpg').never()
  15. module.handle_signal(signal_number, frame)
  16. def test_handle_signal_exits_on_sigterm():
  17. signal_number = module.signal.SIGTERM
  18. frame = flexmock(f_back=flexmock(f_code=flexmock(co_name='something')))
  19. flexmock(module.os).should_receive('getpgrp').and_return(flexmock)
  20. flexmock(module.os).should_receive('killpg')
  21. flexmock(module.sys).should_receive('exit').with_args(
  22. module.EXIT_CODE_FROM_SIGNAL + signal_number
  23. ).once()
  24. module.handle_signal(signal_number, frame)
  25. def test_configure_signals_installs_signal_handlers():
  26. flexmock(module.signal).should_receive('signal').at_least().once()
  27. module.configure_signals()