|  | @@ -30,6 +30,7 @@ def test_get_skip_actions_uses_config_and_arguments(config, arguments, expected_
 | 
	
		
			
				|  |  |  def test_run_configuration_runs_actions_for_each_repository():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('verbosity_to_log_level').and_return(logging.INFO)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module.borg_version).should_receive('local_borg_version').and_return(flexmock())
 | 
	
		
			
				|  |  |      expected_results = [flexmock(), flexmock()]
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('Log_prefix').and_return(flexmock())
 | 
	
	
		
			
				|  | @@ -37,7 +38,7 @@ def test_run_configuration_runs_actions_for_each_repository():
 | 
	
		
			
				|  |  |          expected_results[1:]
 | 
	
		
			
				|  |  |      )
 | 
	
		
			
				|  |  |      config = {'repositories': [{'path': 'foo'}, {'path': 'bar'}]}
 | 
	
		
			
				|  |  | -    arguments = {'global': flexmock(monitoring_verbosity=1)}
 | 
	
		
			
				|  |  | +    arguments = {'global': flexmock(monitoring_verbosity=1, dry_run=False)}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      results = list(module.run_configuration('test.yaml', config, ['/tmp/test.yaml'], arguments))
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -47,11 +48,12 @@ def test_run_configuration_runs_actions_for_each_repository():
 | 
	
		
			
				|  |  |  def test_run_configuration_with_skip_actions_does_not_raise():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('verbosity_to_log_level').and_return(logging.INFO)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return(['compact'])
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module.borg_version).should_receive('local_borg_version').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('Log_prefix').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('run_actions').and_return(flexmock()).and_return(flexmock())
 | 
	
		
			
				|  |  |      config = {'repositories': [{'path': 'foo'}, {'path': 'bar'}], 'skip_actions': ['compact']}
 | 
	
		
			
				|  |  | -    arguments = {'global': flexmock(monitoring_verbosity=1)}
 | 
	
		
			
				|  |  | +    arguments = {'global': flexmock(monitoring_verbosity=1, dry_run=False)}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      list(module.run_configuration('test.yaml', config, ['/tmp/test.yaml'], arguments))
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -59,8 +61,8 @@ def test_run_configuration_with_skip_actions_does_not_raise():
 | 
	
		
			
				|  |  |  def test_run_configuration_with_invalid_borg_version_errors():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('verbosity_to_log_level').and_return(logging.INFO)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module.borg_version).should_receive('local_borg_version').and_raise(ValueError)
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook').never()
 | 
	
		
			
				|  |  |      flexmock(module.dispatch).should_receive('call_hooks').never()
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('Log_prefix').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('run_actions').never()
 | 
	
	
		
			
				|  | @@ -73,6 +75,7 @@ def test_run_configuration_with_invalid_borg_version_errors():
 | 
	
		
			
				|  |  |  def test_run_configuration_logs_monitor_start_error():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('verbosity_to_log_level').and_return(logging.INFO)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module.borg_version).should_receive('local_borg_version').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module.dispatch).should_receive('call_hooks').and_raise(OSError).and_return(
 | 
	
		
			
				|  |  |          None
 | 
	
	
		
			
				|  | @@ -81,6 +84,8 @@ def test_run_configuration_logs_monitor_start_error():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('log_error_records').and_return(expected_results)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('Log_prefix').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('run_actions').never()
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('filter_hooks')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('execute_hooks')
 | 
	
		
			
				|  |  |      config = {'repositories': [{'path': 'foo'}]}
 | 
	
		
			
				|  |  |      arguments = {'global': flexmock(monitoring_verbosity=1, dry_run=False), 'create': flexmock()}
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -92,6 +97,7 @@ def test_run_configuration_logs_monitor_start_error():
 | 
	
		
			
				|  |  |  def test_run_configuration_bails_for_monitor_start_soft_failure():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('verbosity_to_log_level').and_return(logging.INFO)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module.borg_version).should_receive('local_borg_version').and_return(flexmock())
 | 
	
		
			
				|  |  |      error = subprocess.CalledProcessError(borgmatic.hooks.command.SOFT_FAIL_EXIT_CODE, 'try again')
 | 
	
		
			
				|  |  |      flexmock(module.dispatch).should_receive('call_hooks').and_raise(error).and_return(None)
 | 
	
	
		
			
				|  | @@ -109,13 +115,15 @@ def test_run_configuration_bails_for_monitor_start_soft_failure():
 | 
	
		
			
				|  |  |  def test_run_configuration_logs_actions_error():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('verbosity_to_log_level').and_return(logging.INFO)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module.borg_version).should_receive('local_borg_version').and_return(flexmock())
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  |      flexmock(module.dispatch).should_receive('call_hooks')
 | 
	
		
			
				|  |  |      expected_results = [flexmock()]
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('log_error_records').and_return(expected_results)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('Log_prefix').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('run_actions').and_raise(OSError)
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('filter_hooks')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('execute_hooks')
 | 
	
		
			
				|  |  |      config = {'repositories': [{'path': 'foo'}]}
 | 
	
		
			
				|  |  |      arguments = {'global': flexmock(monitoring_verbosity=1, dry_run=False)}
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -127,6 +135,7 @@ def test_run_configuration_logs_actions_error():
 | 
	
		
			
				|  |  |  def test_run_configuration_skips_remaining_actions_for_actions_soft_failure_but_still_runs_next_repository_actions():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('verbosity_to_log_level').and_return(logging.INFO)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module.borg_version).should_receive('local_borg_version').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module.dispatch).should_receive('call_hooks').times(5)
 | 
	
		
			
				|  |  |      error = subprocess.CalledProcessError(borgmatic.hooks.command.SOFT_FAIL_EXIT_CODE, 'try again')
 | 
	
	
		
			
				|  | @@ -146,6 +155,7 @@ def test_run_configuration_skips_remaining_actions_for_actions_soft_failure_but_
 | 
	
		
			
				|  |  |  def test_run_configuration_logs_monitor_log_error():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('verbosity_to_log_level').and_return(logging.INFO)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module.borg_version).should_receive('local_borg_version').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module.dispatch).should_receive('call_hooks').and_return(None).and_return(
 | 
	
		
			
				|  |  |          None
 | 
	
	
		
			
				|  | @@ -154,6 +164,8 @@ def test_run_configuration_logs_monitor_log_error():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('log_error_records').and_return(expected_results)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('Log_prefix').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('run_actions').and_return([])
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('filter_hooks')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('execute_hooks')
 | 
	
		
			
				|  |  |      config = {'repositories': [{'path': 'foo'}]}
 | 
	
		
			
				|  |  |      arguments = {'global': flexmock(monitoring_verbosity=1, dry_run=False), 'create': flexmock()}
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -165,6 +177,7 @@ def test_run_configuration_logs_monitor_log_error():
 | 
	
		
			
				|  |  |  def test_run_configuration_still_pings_monitor_for_monitor_log_soft_failure():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('verbosity_to_log_level').and_return(logging.INFO)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module.borg_version).should_receive('local_borg_version').and_return(flexmock())
 | 
	
		
			
				|  |  |      error = subprocess.CalledProcessError(borgmatic.hooks.command.SOFT_FAIL_EXIT_CODE, 'try again')
 | 
	
		
			
				|  |  |      flexmock(module.dispatch).should_receive('call_hooks').and_return(None).and_return(
 | 
	
	
		
			
				|  | @@ -185,6 +198,7 @@ def test_run_configuration_still_pings_monitor_for_monitor_log_soft_failure():
 | 
	
		
			
				|  |  |  def test_run_configuration_logs_monitor_finish_error():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('verbosity_to_log_level').and_return(logging.INFO)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module.borg_version).should_receive('local_borg_version').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module.dispatch).should_receive('call_hooks').and_return(None).and_return(
 | 
	
		
			
				|  |  |          None
 | 
	
	
		
			
				|  | @@ -193,6 +207,8 @@ def test_run_configuration_logs_monitor_finish_error():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('log_error_records').and_return(expected_results)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('Log_prefix').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('run_actions').and_return([])
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('filter_hooks')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('execute_hooks')
 | 
	
		
			
				|  |  |      config = {'repositories': [{'path': 'foo'}]}
 | 
	
		
			
				|  |  |      arguments = {'global': flexmock(monitoring_verbosity=1, dry_run=False), 'create': flexmock()}
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -204,6 +220,7 @@ def test_run_configuration_logs_monitor_finish_error():
 | 
	
		
			
				|  |  |  def test_run_configuration_bails_for_monitor_finish_soft_failure():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('verbosity_to_log_level').and_return(logging.INFO)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module.borg_version).should_receive('local_borg_version').and_return(flexmock())
 | 
	
		
			
				|  |  |      error = subprocess.CalledProcessError(borgmatic.hooks.command.SOFT_FAIL_EXIT_CODE, 'try again')
 | 
	
		
			
				|  |  |      flexmock(module.dispatch).should_receive('call_hooks').and_return(None).and_return(
 | 
	
	
		
			
				|  | @@ -224,6 +241,7 @@ def test_run_configuration_bails_for_monitor_finish_soft_failure():
 | 
	
		
			
				|  |  |  def test_run_configuration_does_not_call_monitoring_hooks_if_monitoring_hooks_are_disabled():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('verbosity_to_log_level').and_return(module.DISABLED)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module.borg_version).should_receive('local_borg_version').and_return(flexmock())
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      flexmock(module.dispatch).should_receive('call_hooks').never()
 | 
	
	
		
			
				|  | @@ -239,8 +257,10 @@ def test_run_configuration_does_not_call_monitoring_hooks_if_monitoring_hooks_ar
 | 
	
		
			
				|  |  |  def test_run_configuration_logs_on_error_hook_error():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('verbosity_to_log_level').and_return(logging.INFO)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module.borg_version).should_receive('local_borg_version').and_return(flexmock())
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook').and_raise(OSError)
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('filter_hooks')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('execute_hooks').and_raise(OSError)
 | 
	
		
			
				|  |  |      expected_results = [flexmock(), flexmock()]
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('log_error_records').and_return(
 | 
	
		
			
				|  |  |          expected_results[:1]
 | 
	
	
		
			
				|  | @@ -258,9 +278,11 @@ def test_run_configuration_logs_on_error_hook_error():
 | 
	
		
			
				|  |  |  def test_run_configuration_bails_for_on_error_hook_soft_failure():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('verbosity_to_log_level').and_return(logging.INFO)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module.borg_version).should_receive('local_borg_version').and_return(flexmock())
 | 
	
		
			
				|  |  |      error = subprocess.CalledProcessError(borgmatic.hooks.command.SOFT_FAIL_EXIT_CODE, 'try again')
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook').and_raise(error)
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('filter_hooks')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('execute_hooks').and_raise(error)
 | 
	
		
			
				|  |  |      expected_results = [flexmock()]
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('log_error_records').and_return(expected_results)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('Log_prefix').and_return(flexmock())
 | 
	
	
		
			
				|  | @@ -277,14 +299,18 @@ def test_run_configuration_retries_soft_error():
 | 
	
		
			
				|  |  |      # Run action first fails, second passes.
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('verbosity_to_log_level').and_return(logging.INFO)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module.borg_version).should_receive('local_borg_version').and_return(flexmock())
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('Log_prefix').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('run_actions').and_raise(OSError).and_return([])
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('log_error_records').and_return([flexmock()]).once()
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('filter_hooks').never()
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('execute_hooks').never()
 | 
	
		
			
				|  |  |      config = {'repositories': [{'path': 'foo'}], 'retries': 1}
 | 
	
		
			
				|  |  |      arguments = {'global': flexmock(monitoring_verbosity=1, dry_run=False), 'create': flexmock()}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      results = list(module.run_configuration('test.yaml', config, ['/tmp/test.yaml'], arguments))
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      assert results == []
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -292,8 +318,8 @@ def test_run_configuration_retries_hard_error():
 | 
	
		
			
				|  |  |      # Run action fails twice.
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('verbosity_to_log_level').and_return(logging.INFO)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module.borg_version).should_receive('local_borg_version').and_return(flexmock())
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('Log_prefix').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('run_actions').and_raise(OSError).times(2)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('log_error_records').with_args(
 | 
	
	
		
			
				|  | @@ -307,17 +333,21 @@ def test_run_configuration_retries_hard_error():
 | 
	
		
			
				|  |  |          'Error running actions for repository',
 | 
	
		
			
				|  |  |          OSError,
 | 
	
		
			
				|  |  |      ).and_return(error_logs)
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('filter_hooks')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('execute_hooks')
 | 
	
		
			
				|  |  |      config = {'repositories': [{'path': 'foo'}], 'retries': 1}
 | 
	
		
			
				|  |  |      arguments = {'global': flexmock(monitoring_verbosity=1, dry_run=False), 'create': flexmock()}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      results = list(module.run_configuration('test.yaml', config, ['/tmp/test.yaml'], arguments))
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      assert results == error_logs
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -def test_run_configuration_repos_ordered():
 | 
	
		
			
				|  |  | +def test_run_configuration_retries_repositories_in_order():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('verbosity_to_log_level').and_return(logging.INFO)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module.borg_version).should_receive('local_borg_version').and_return(flexmock())
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('Log_prefix').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('run_actions').and_raise(OSError).times(2)
 | 
	
		
			
				|  |  |      expected_results = [flexmock(), flexmock()]
 | 
	
	
		
			
				|  | @@ -327,17 +357,21 @@ def test_run_configuration_repos_ordered():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('log_error_records').with_args(
 | 
	
		
			
				|  |  |          'Error running actions for repository', OSError
 | 
	
		
			
				|  |  |      ).and_return(expected_results[1:]).ordered()
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('filter_hooks')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('execute_hooks')
 | 
	
		
			
				|  |  |      config = {'repositories': [{'path': 'foo'}, {'path': 'bar'}]}
 | 
	
		
			
				|  |  |      arguments = {'global': flexmock(monitoring_verbosity=1, dry_run=False), 'create': flexmock()}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      results = list(module.run_configuration('test.yaml', config, ['/tmp/test.yaml'], arguments))
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      assert results == expected_results
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  def test_run_configuration_retries_round_robin():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('verbosity_to_log_level').and_return(logging.INFO)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module.borg_version).should_receive('local_borg_version').and_return(flexmock())
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('Log_prefix').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('run_actions').and_raise(OSError).times(4)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('log_error_records').with_args(
 | 
	
	
		
			
				|  | @@ -360,20 +394,24 @@ def test_run_configuration_retries_round_robin():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('log_error_records').with_args(
 | 
	
		
			
				|  |  |          'Error running actions for repository', OSError
 | 
	
		
			
				|  |  |      ).and_return(bar_error_logs).ordered()
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('filter_hooks')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('execute_hooks')
 | 
	
		
			
				|  |  |      config = {
 | 
	
		
			
				|  |  |          'repositories': [{'path': 'foo'}, {'path': 'bar'}],
 | 
	
		
			
				|  |  |          'retries': 1,
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      arguments = {'global': flexmock(monitoring_verbosity=1, dry_run=False), 'create': flexmock()}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      results = list(module.run_configuration('test.yaml', config, ['/tmp/test.yaml'], arguments))
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      assert results == foo_error_logs + bar_error_logs
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -def test_run_configuration_retries_one_passes():
 | 
	
		
			
				|  |  | +def test_run_configuration_with_one_retry():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('verbosity_to_log_level').and_return(logging.INFO)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module.borg_version).should_receive('local_borg_version').and_return(flexmock())
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('Log_prefix').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('run_actions').and_raise(OSError).and_raise(OSError).and_return(
 | 
	
		
			
				|  |  |          []
 | 
	
	
		
			
				|  | @@ -394,20 +432,24 @@ def test_run_configuration_retries_one_passes():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('log_error_records').with_args(
 | 
	
		
			
				|  |  |          'Error running actions for repository', OSError
 | 
	
		
			
				|  |  |      ).and_return(error_logs).ordered()
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('filter_hooks')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('execute_hooks')
 | 
	
		
			
				|  |  |      config = {
 | 
	
		
			
				|  |  |          'repositories': [{'path': 'foo'}, {'path': 'bar'}],
 | 
	
		
			
				|  |  |          'retries': 1,
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      arguments = {'global': flexmock(monitoring_verbosity=1, dry_run=False), 'create': flexmock()}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      results = list(module.run_configuration('test.yaml', config, ['/tmp/test.yaml'], arguments))
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      assert results == error_logs
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -def test_run_configuration_retry_wait():
 | 
	
		
			
				|  |  | +def test_run_configuration_with_retry_wait_does_backoff_after_each_retry():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('verbosity_to_log_level').and_return(logging.INFO)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module.borg_version).should_receive('local_borg_version').and_return(flexmock())
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('Log_prefix').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('run_actions').and_raise(OSError).times(4)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('log_error_records').with_args(
 | 
	
	
		
			
				|  | @@ -438,21 +480,25 @@ def test_run_configuration_retry_wait():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('log_error_records').with_args(
 | 
	
		
			
				|  |  |          'Error running actions for repository', OSError
 | 
	
		
			
				|  |  |      ).and_return(error_logs).ordered()
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('filter_hooks')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('execute_hooks')
 | 
	
		
			
				|  |  |      config = {
 | 
	
		
			
				|  |  |          'repositories': [{'path': 'foo'}],
 | 
	
		
			
				|  |  |          'retries': 3,
 | 
	
		
			
				|  |  |          'retry_wait': 10,
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      arguments = {'global': flexmock(monitoring_verbosity=1, dry_run=False), 'create': flexmock()}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      results = list(module.run_configuration('test.yaml', config, ['/tmp/test.yaml'], arguments))
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      assert results == error_logs
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -def test_run_configuration_retries_timeout_multiple_repos():
 | 
	
		
			
				|  |  | +def test_run_configuration_with_multiple_repositories_retries_with_timeout():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('verbosity_to_log_level').and_return(logging.INFO)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module.borg_version).should_receive('local_borg_version').and_return(flexmock())
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('Log_prefix').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('run_actions').and_raise(OSError).and_raise(OSError).and_return(
 | 
	
		
			
				|  |  |          []
 | 
	
	
		
			
				|  | @@ -479,20 +525,24 @@ def test_run_configuration_retries_timeout_multiple_repos():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('log_error_records').with_args(
 | 
	
		
			
				|  |  |          'Error running actions for repository', OSError
 | 
	
		
			
				|  |  |      ).and_return(error_logs).ordered()
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('filter_hooks')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('execute_hooks')
 | 
	
		
			
				|  |  |      config = {
 | 
	
		
			
				|  |  |          'repositories': [{'path': 'foo'}, {'path': 'bar'}],
 | 
	
		
			
				|  |  |          'retries': 1,
 | 
	
		
			
				|  |  |          'retry_wait': 10,
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      arguments = {'global': flexmock(monitoring_verbosity=1, dry_run=False), 'create': flexmock()}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      results = list(module.run_configuration('test.yaml', config, ['/tmp/test.yaml'], arguments))
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      assert results == error_logs
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  def test_run_actions_runs_repo_create():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('add_custom_log_levels')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(borgmatic.actions.repo_create).should_receive('run_repo_create').once()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      tuple(
 | 
	
	
		
			
				|  | @@ -515,19 +565,13 @@ def test_run_actions_runs_repo_create():
 | 
	
		
			
				|  |  |  def test_run_actions_adds_label_file_to_hook_context():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('add_custom_log_levels')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      expected = flexmock()
 | 
	
		
			
				|  |  |      flexmock(borgmatic.actions.create).should_receive('run_create').with_args(
 | 
	
		
			
				|  |  |          config_filename=object,
 | 
	
		
			
				|  |  |          repository={'path': 'repo', 'label': 'my repo'},
 | 
	
		
			
				|  |  |          config={'repositories': []},
 | 
	
		
			
				|  |  |          config_paths=[],
 | 
	
		
			
				|  |  | -        hook_context={
 | 
	
		
			
				|  |  | -            'repository_label': 'my repo',
 | 
	
		
			
				|  |  | -            'log_file': '',
 | 
	
		
			
				|  |  | -            'repositories': '',
 | 
	
		
			
				|  |  | -            'repository': 'repo',
 | 
	
		
			
				|  |  | -        },
 | 
	
		
			
				|  |  |          local_borg_version=object,
 | 
	
		
			
				|  |  |          create_arguments=object,
 | 
	
		
			
				|  |  |          global_arguments=object,
 | 
	
	
		
			
				|  | @@ -554,19 +598,13 @@ def test_run_actions_adds_label_file_to_hook_context():
 | 
	
		
			
				|  |  |  def test_run_actions_adds_log_file_to_hook_context():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('add_custom_log_levels')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      expected = flexmock()
 | 
	
		
			
				|  |  |      flexmock(borgmatic.actions.create).should_receive('run_create').with_args(
 | 
	
		
			
				|  |  |          config_filename=object,
 | 
	
		
			
				|  |  |          repository={'path': 'repo'},
 | 
	
		
			
				|  |  |          config={'repositories': []},
 | 
	
		
			
				|  |  |          config_paths=[],
 | 
	
		
			
				|  |  | -        hook_context={
 | 
	
		
			
				|  |  | -            'repository_label': '',
 | 
	
		
			
				|  |  | -            'log_file': 'foo',
 | 
	
		
			
				|  |  | -            'repositories': '',
 | 
	
		
			
				|  |  | -            'repository': 'repo',
 | 
	
		
			
				|  |  | -        },
 | 
	
		
			
				|  |  |          local_borg_version=object,
 | 
	
		
			
				|  |  |          create_arguments=object,
 | 
	
		
			
				|  |  |          global_arguments=object,
 | 
	
	
		
			
				|  | @@ -593,7 +631,7 @@ def test_run_actions_adds_log_file_to_hook_context():
 | 
	
		
			
				|  |  |  def test_run_actions_runs_transfer():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('add_custom_log_levels')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(borgmatic.actions.transfer).should_receive('run_transfer').once()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      tuple(
 | 
	
	
		
			
				|  | @@ -613,7 +651,7 @@ def test_run_actions_runs_transfer():
 | 
	
		
			
				|  |  |  def test_run_actions_runs_create():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('add_custom_log_levels')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      expected = flexmock()
 | 
	
		
			
				|  |  |      flexmock(borgmatic.actions.create).should_receive('run_create').and_yield(expected).once()
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -635,7 +673,7 @@ def test_run_actions_runs_create():
 | 
	
		
			
				|  |  |  def test_run_actions_with_skip_actions_skips_create():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('add_custom_log_levels')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return(['create'])
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(borgmatic.actions.create).should_receive('run_create').never()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      tuple(
 | 
	
	
		
			
				|  | @@ -655,7 +693,7 @@ def test_run_actions_with_skip_actions_skips_create():
 | 
	
		
			
				|  |  |  def test_run_actions_runs_prune():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('add_custom_log_levels')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(borgmatic.actions.prune).should_receive('run_prune').once()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      tuple(
 | 
	
	
		
			
				|  | @@ -675,7 +713,7 @@ def test_run_actions_runs_prune():
 | 
	
		
			
				|  |  |  def test_run_actions_with_skip_actions_skips_prune():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('add_custom_log_levels')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return(['prune'])
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(borgmatic.actions.prune).should_receive('run_prune').never()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      tuple(
 | 
	
	
		
			
				|  | @@ -695,7 +733,7 @@ def test_run_actions_with_skip_actions_skips_prune():
 | 
	
		
			
				|  |  |  def test_run_actions_runs_compact():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('add_custom_log_levels')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(borgmatic.actions.compact).should_receive('run_compact').once()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      tuple(
 | 
	
	
		
			
				|  | @@ -715,7 +753,7 @@ def test_run_actions_runs_compact():
 | 
	
		
			
				|  |  |  def test_run_actions_with_skip_actions_skips_compact():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('add_custom_log_levels')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return(['compact'])
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(borgmatic.actions.compact).should_receive('run_compact').never()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      tuple(
 | 
	
	
		
			
				|  | @@ -735,7 +773,7 @@ def test_run_actions_with_skip_actions_skips_compact():
 | 
	
		
			
				|  |  |  def test_run_actions_runs_check_when_repository_enabled_for_checks():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('add_custom_log_levels')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module.checks).should_receive('repository_enabled_for_checks').and_return(True)
 | 
	
		
			
				|  |  |      flexmock(borgmatic.actions.check).should_receive('run_check').once()
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -756,7 +794,7 @@ def test_run_actions_runs_check_when_repository_enabled_for_checks():
 | 
	
		
			
				|  |  |  def test_run_actions_skips_check_when_repository_not_enabled_for_checks():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('add_custom_log_levels')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module.checks).should_receive('repository_enabled_for_checks').and_return(False)
 | 
	
		
			
				|  |  |      flexmock(borgmatic.actions.check).should_receive('run_check').never()
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -777,7 +815,7 @@ def test_run_actions_skips_check_when_repository_not_enabled_for_checks():
 | 
	
		
			
				|  |  |  def test_run_actions_with_skip_actions_skips_check():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('add_custom_log_levels')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return(['check'])
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module.checks).should_receive('repository_enabled_for_checks').and_return(True)
 | 
	
		
			
				|  |  |      flexmock(borgmatic.actions.check).should_receive('run_check').never()
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -798,7 +836,7 @@ def test_run_actions_with_skip_actions_skips_check():
 | 
	
		
			
				|  |  |  def test_run_actions_runs_extract():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('add_custom_log_levels')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(borgmatic.actions.extract).should_receive('run_extract').once()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      tuple(
 | 
	
	
		
			
				|  | @@ -818,7 +856,7 @@ def test_run_actions_runs_extract():
 | 
	
		
			
				|  |  |  def test_run_actions_runs_export_tar():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('add_custom_log_levels')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(borgmatic.actions.export_tar).should_receive('run_export_tar').once()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      tuple(
 | 
	
	
		
			
				|  | @@ -838,7 +876,7 @@ def test_run_actions_runs_export_tar():
 | 
	
		
			
				|  |  |  def test_run_actions_runs_mount():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('add_custom_log_levels')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(borgmatic.actions.mount).should_receive('run_mount').once()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      tuple(
 | 
	
	
		
			
				|  | @@ -858,7 +896,7 @@ def test_run_actions_runs_mount():
 | 
	
		
			
				|  |  |  def test_run_actions_runs_restore():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('add_custom_log_levels')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(borgmatic.actions.restore).should_receive('run_restore').once()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      tuple(
 | 
	
	
		
			
				|  | @@ -878,7 +916,7 @@ def test_run_actions_runs_restore():
 | 
	
		
			
				|  |  |  def test_run_actions_runs_repo_list():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('add_custom_log_levels')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      expected = flexmock()
 | 
	
		
			
				|  |  |      flexmock(borgmatic.actions.repo_list).should_receive('run_repo_list').and_yield(expected).once()
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -900,7 +938,7 @@ def test_run_actions_runs_repo_list():
 | 
	
		
			
				|  |  |  def test_run_actions_runs_list():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('add_custom_log_levels')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      expected = flexmock()
 | 
	
		
			
				|  |  |      flexmock(borgmatic.actions.list).should_receive('run_list').and_yield(expected).once()
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -922,7 +960,7 @@ def test_run_actions_runs_list():
 | 
	
		
			
				|  |  |  def test_run_actions_runs_repo_info():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('add_custom_log_levels')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      expected = flexmock()
 | 
	
		
			
				|  |  |      flexmock(borgmatic.actions.repo_info).should_receive('run_repo_info').and_yield(expected).once()
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -944,7 +982,7 @@ def test_run_actions_runs_repo_info():
 | 
	
		
			
				|  |  |  def test_run_actions_runs_info():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('add_custom_log_levels')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      expected = flexmock()
 | 
	
		
			
				|  |  |      flexmock(borgmatic.actions.info).should_receive('run_info').and_yield(expected).once()
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -966,7 +1004,7 @@ def test_run_actions_runs_info():
 | 
	
		
			
				|  |  |  def test_run_actions_runs_break_lock():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('add_custom_log_levels')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(borgmatic.actions.break_lock).should_receive('run_break_lock').once()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      tuple(
 | 
	
	
		
			
				|  | @@ -986,7 +1024,7 @@ def test_run_actions_runs_break_lock():
 | 
	
		
			
				|  |  |  def test_run_actions_runs_export_key():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('add_custom_log_levels')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(borgmatic.actions.export_key).should_receive('run_export_key').once()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      tuple(
 | 
	
	
		
			
				|  | @@ -1006,7 +1044,7 @@ def test_run_actions_runs_export_key():
 | 
	
		
			
				|  |  |  def test_run_actions_runs_change_passphrase():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('add_custom_log_levels')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(borgmatic.actions.change_passphrase).should_receive('run_change_passphrase').once()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      tuple(
 | 
	
	
		
			
				|  | @@ -1029,7 +1067,7 @@ def test_run_actions_runs_change_passphrase():
 | 
	
		
			
				|  |  |  def test_run_actions_runs_delete():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('add_custom_log_levels')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(borgmatic.actions.delete).should_receive('run_delete').once()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      tuple(
 | 
	
	
		
			
				|  | @@ -1049,7 +1087,7 @@ def test_run_actions_runs_delete():
 | 
	
		
			
				|  |  |  def test_run_actions_runs_repo_delete():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('add_custom_log_levels')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(borgmatic.actions.repo_delete).should_receive('run_repo_delete').once()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      tuple(
 | 
	
	
		
			
				|  | @@ -1072,7 +1110,7 @@ def test_run_actions_runs_repo_delete():
 | 
	
		
			
				|  |  |  def test_run_actions_runs_borg():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('add_custom_log_levels')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(borgmatic.actions.borg).should_receive('run_borg').once()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      tuple(
 | 
	
	
		
			
				|  | @@ -1092,7 +1130,7 @@ def test_run_actions_runs_borg():
 | 
	
		
			
				|  |  |  def test_run_actions_runs_multiple_actions_in_argument_order():
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('add_custom_log_levels')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('get_skip_actions').and_return([])
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('Before_after_hooks').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(borgmatic.actions.borg).should_receive('run_borg').once().ordered()
 | 
	
		
			
				|  |  |      flexmock(borgmatic.actions.restore).should_receive('run_restore').once().ordered()
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1398,11 +1436,12 @@ def test_collect_highlander_action_summary_logs_error_on_run_validate_failure():
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  def test_collect_configuration_run_summary_logs_info_for_success():
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook').never()
 | 
	
		
			
				|  |  |      flexmock(module.validate).should_receive('guard_configuration_contains_repository')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('filter_hooks')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('execute_hooks')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('Log_prefix').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('run_configuration').and_return([])
 | 
	
		
			
				|  |  | -    arguments = {}
 | 
	
		
			
				|  |  | +    arguments = {'global': flexmock(dry_run=False)}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      logs = tuple(
 | 
	
		
			
				|  |  |          module.collect_configuration_run_summary_logs(
 | 
	
	
		
			
				|  | @@ -1415,6 +1454,8 @@ def test_collect_configuration_run_summary_logs_info_for_success():
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  def test_collect_configuration_run_summary_executes_hooks_for_create():
 | 
	
		
			
				|  |  |      flexmock(module.validate).should_receive('guard_configuration_contains_repository')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('filter_hooks')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('execute_hooks')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('Log_prefix').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('run_configuration').and_return([])
 | 
	
		
			
				|  |  |      arguments = {'create': flexmock(), 'global': flexmock(monitoring_verbosity=1, dry_run=False)}
 | 
	
	
		
			
				|  | @@ -1430,9 +1471,11 @@ def test_collect_configuration_run_summary_executes_hooks_for_create():
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  def test_collect_configuration_run_summary_logs_info_for_success_with_extract():
 | 
	
		
			
				|  |  |      flexmock(module.validate).should_receive('guard_configuration_contains_repository')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('filter_hooks')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('execute_hooks')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('Log_prefix').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('run_configuration').and_return([])
 | 
	
		
			
				|  |  | -    arguments = {'extract': flexmock(repository='repo')}
 | 
	
		
			
				|  |  | +    arguments = {'extract': flexmock(repository='repo'), 'global': flexmock(dry_run=False)}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      logs = tuple(
 | 
	
		
			
				|  |  |          module.collect_configuration_run_summary_logs(
 | 
	
	
		
			
				|  | @@ -1462,9 +1505,11 @@ def test_collect_configuration_run_summary_logs_extract_with_repository_error():
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  def test_collect_configuration_run_summary_logs_info_for_success_with_mount():
 | 
	
		
			
				|  |  |      flexmock(module.validate).should_receive('guard_configuration_contains_repository')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('filter_hooks')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('execute_hooks')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('Log_prefix').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('run_configuration').and_return([])
 | 
	
		
			
				|  |  | -    arguments = {'mount': flexmock(repository='repo')}
 | 
	
		
			
				|  |  | +    arguments = {'mount': flexmock(repository='repo'), 'global': flexmock(dry_run=False)}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      logs = tuple(
 | 
	
		
			
				|  |  |          module.collect_configuration_run_summary_logs(
 | 
	
	
		
			
				|  | @@ -1481,7 +1526,7 @@ def test_collect_configuration_run_summary_logs_mount_with_repository_error():
 | 
	
		
			
				|  |  |      )
 | 
	
		
			
				|  |  |      expected_logs = (flexmock(),)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('log_error_records').and_return(expected_logs)
 | 
	
		
			
				|  |  | -    arguments = {'mount': flexmock(repository='repo')}
 | 
	
		
			
				|  |  | +    arguments = {'mount': flexmock(repository='repo'), 'global': flexmock(dry_run=False)}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      logs = tuple(
 | 
	
		
			
				|  |  |          module.collect_configuration_run_summary_logs(
 | 
	
	
		
			
				|  | @@ -1493,6 +1538,9 @@ def test_collect_configuration_run_summary_logs_mount_with_repository_error():
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  def test_collect_configuration_run_summary_logs_missing_configs_error():
 | 
	
		
			
				|  |  | +    flexmock(module.validate).should_receive('guard_configuration_contains_repository')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('filter_hooks')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('execute_hooks')
 | 
	
		
			
				|  |  |      arguments = {'global': flexmock(config_paths=[])}
 | 
	
		
			
				|  |  |      expected_logs = (flexmock(),)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('log_error_records').and_return(expected_logs)
 | 
	
	
		
			
				|  | @@ -1505,7 +1553,9 @@ def test_collect_configuration_run_summary_logs_missing_configs_error():
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  def test_collect_configuration_run_summary_logs_pre_hook_error():
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook').and_raise(ValueError)
 | 
	
		
			
				|  |  | +    flexmock(module.validate).should_receive('guard_configuration_contains_repository')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('filter_hooks')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('execute_hooks').and_raise(ValueError)
 | 
	
		
			
				|  |  |      expected_logs = (flexmock(),)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('log_error_records').and_return(expected_logs)
 | 
	
		
			
				|  |  |      arguments = {'create': flexmock(), 'global': flexmock(monitoring_verbosity=1, dry_run=False)}
 | 
	
	
		
			
				|  | @@ -1520,8 +1570,9 @@ def test_collect_configuration_run_summary_logs_pre_hook_error():
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  def test_collect_configuration_run_summary_logs_post_hook_error():
 | 
	
		
			
				|  |  | -    flexmock(module.command).should_receive('execute_hook').and_return(None).and_raise(ValueError)
 | 
	
		
			
				|  |  |      flexmock(module.validate).should_receive('guard_configuration_contains_repository')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('filter_hooks')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('execute_hooks').and_return(None).and_raise(ValueError)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('Log_prefix').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('run_configuration').and_return([])
 | 
	
		
			
				|  |  |      expected_logs = (flexmock(),)
 | 
	
	
		
			
				|  | @@ -1543,7 +1594,10 @@ def test_collect_configuration_run_summary_logs_for_list_with_archive_and_reposi
 | 
	
		
			
				|  |  |      )
 | 
	
		
			
				|  |  |      expected_logs = (flexmock(),)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('log_error_records').and_return(expected_logs)
 | 
	
		
			
				|  |  | -    arguments = {'list': flexmock(repository='repo', archive='test')}
 | 
	
		
			
				|  |  | +    arguments = {
 | 
	
		
			
				|  |  | +        'list': flexmock(repository='repo', archive='test'),
 | 
	
		
			
				|  |  | +        'global': flexmock(dry_run=False),
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      logs = tuple(
 | 
	
		
			
				|  |  |          module.collect_configuration_run_summary_logs(
 | 
	
	
		
			
				|  | @@ -1556,9 +1610,14 @@ def test_collect_configuration_run_summary_logs_for_list_with_archive_and_reposi
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  def test_collect_configuration_run_summary_logs_info_for_success_with_list():
 | 
	
		
			
				|  |  |      flexmock(module.validate).should_receive('guard_configuration_contains_repository')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('filter_hooks')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('execute_hooks')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('Log_prefix').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('run_configuration').and_return([])
 | 
	
		
			
				|  |  | -    arguments = {'list': flexmock(repository='repo', archive=None)}
 | 
	
		
			
				|  |  | +    arguments = {
 | 
	
		
			
				|  |  | +        'list': flexmock(repository='repo', archive=None),
 | 
	
		
			
				|  |  | +        'global': flexmock(dry_run=False),
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      logs = tuple(
 | 
	
		
			
				|  |  |          module.collect_configuration_run_summary_logs(
 | 
	
	
		
			
				|  | @@ -1571,12 +1630,14 @@ def test_collect_configuration_run_summary_logs_info_for_success_with_list():
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  def test_collect_configuration_run_summary_logs_run_configuration_error():
 | 
	
		
			
				|  |  |      flexmock(module.validate).should_receive('guard_configuration_contains_repository')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('filter_hooks')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('execute_hooks')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('Log_prefix').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('run_configuration').and_return(
 | 
	
		
			
				|  |  |          [logging.makeLogRecord(dict(levelno=logging.CRITICAL, levelname='CRITICAL', msg='Error'))]
 | 
	
		
			
				|  |  |      )
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('log_error_records').and_return([])
 | 
	
		
			
				|  |  | -    arguments = {}
 | 
	
		
			
				|  |  | +    arguments = {'global': flexmock(dry_run=False)}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      logs = tuple(
 | 
	
		
			
				|  |  |          module.collect_configuration_run_summary_logs(
 | 
	
	
		
			
				|  | @@ -1589,13 +1650,15 @@ def test_collect_configuration_run_summary_logs_run_configuration_error():
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  def test_collect_configuration_run_summary_logs_run_umount_error():
 | 
	
		
			
				|  |  |      flexmock(module.validate).should_receive('guard_configuration_contains_repository')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('filter_hooks')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('execute_hooks')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('Log_prefix').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('run_configuration').and_return([])
 | 
	
		
			
				|  |  |      flexmock(module.borg_umount).should_receive('unmount_archive').and_raise(OSError)
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('log_error_records').and_return(
 | 
	
		
			
				|  |  |          [logging.makeLogRecord(dict(levelno=logging.CRITICAL, levelname='CRITICAL', msg='Error'))]
 | 
	
		
			
				|  |  |      )
 | 
	
		
			
				|  |  | -    arguments = {'umount': flexmock(mount_point='/mnt')}
 | 
	
		
			
				|  |  | +    arguments = {'umount': flexmock(mount_point='/mnt'), 'global': flexmock(dry_run=False)}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      logs = tuple(
 | 
	
		
			
				|  |  |          module.collect_configuration_run_summary_logs(
 | 
	
	
		
			
				|  | @@ -1608,6 +1671,8 @@ def test_collect_configuration_run_summary_logs_run_umount_error():
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  def test_collect_configuration_run_summary_logs_outputs_merged_json_results():
 | 
	
		
			
				|  |  |      flexmock(module.validate).should_receive('guard_configuration_contains_repository')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('filter_hooks')
 | 
	
		
			
				|  |  | +    flexmock(module.command).should_receive('execute_hooks')
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('Log_prefix').and_return(flexmock())
 | 
	
		
			
				|  |  |      flexmock(module).should_receive('run_configuration').and_return(['foo', 'bar']).and_return(
 | 
	
		
			
				|  |  |          ['baz']
 | 
	
	
		
			
				|  | @@ -1615,7 +1680,7 @@ def test_collect_configuration_run_summary_logs_outputs_merged_json_results():
 | 
	
		
			
				|  |  |      stdout = flexmock()
 | 
	
		
			
				|  |  |      stdout.should_receive('write').with_args('["foo", "bar", "baz"]').once()
 | 
	
		
			
				|  |  |      flexmock(module.sys).stdout = stdout
 | 
	
		
			
				|  |  | -    arguments = {}
 | 
	
		
			
				|  |  | +    arguments = {'global': flexmock(dry_run=False)}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      tuple(
 | 
	
		
			
				|  |  |          module.collect_configuration_run_summary_logs(
 |