def test_execute_does_not_raise_on_converge_error( patched_converge, patched_print_info, molecule_instance): patched_converge.return_value = (1, None) i = idempotence.Idempotence({}, {}, molecule_instance) result = i.execute() msg = 'Skipping due to errors during converge.' patched_print_info.assert_called_with(msg) assert (1, None) == result
def test_execute_raises_on_idempotence_failure(patched_converge, patched_logger_error, molecule_instance): patched_converge.return_value = None, 'changed=2' i = idempotence.Idempotence({}, {}, molecule_instance) with pytest.raises(SystemExit): i.execute() msg = 'Idempotence test failed.' patched_logger_error.assert_called_with(msg)
def test_execute_does_not_raise_on_idempotence_failure(patched_converge, patched_logger_error, molecule_instance): patched_converge.return_value = None, 'changed=2' i = idempotence.Idempotence({}, {}, molecule_instance) result = i.execute(exit=False) msg = 'Idempotence test failed.' patched_logger_error.assert_called_with(msg) assert (1, None) == result
def test_execute_with_successful_idempotence( patched_converge, patched_print_info, molecule_instance): i = idempotence.Idempotence({}, {}, molecule_instance) result = i.execute() msg = 'Idempotence test in progress (can take a few minutes) ...' patched_print_info.assert_called_once_with(msg) patched_converge.assert_called_with( idempotent=True, exit=False, hide_errors=True) assert (None, None) == result
def test_non_idempotent_tasks_idempotent(molecule_instance): output = """ PLAY [all] *********************************************************** GATHERING FACTS ****************************************************** ok: [check-command-01] TASK: [Idempotence test] ********************************************* ok: [check-command-01] PLAY RECAP *********************************************************** check-command-01: ok=3 changed=0 unreachable=0 failed=0 """ i = idempotence.Idempotence({}, {}, molecule_instance) ret = i._non_idempotent_tasks(output) assert ret == []
def test_execute_raises_on_idempotence_failure( mocker, patched_converge, patched_logger_error, molecule_instance): output = 'check-command-01: ok=2 changed=1 unreachable=0 failed=0' patched_converge.return_value = None, output i = idempotence.Idempotence({}, {}, molecule_instance) with pytest.raises(SystemExit): i.execute() expected_calls = [ mocker.call('Idempotence test failed because of the following tasks:'), mocker.call('') ] assert patched_logger_error.mock_calls == expected_calls
def test_execute_does_not_raise_on_idempotence_failure( mocker, patched_converge, patched_logger_error, molecule_instance): output = 'check-command-01: ok=2 changed=1 unreachable=0 failed=0' patched_converge.return_value = None, output i = idempotence.Idempotence({}, {}, molecule_instance) result = i.execute(exit=False) expected_calls = [ mocker.call('Idempotence test failed because of the following tasks:'), mocker.call('') ] assert patched_logger_error.mock_calls == expected_calls assert (1, None) == result
def test_non_idempotent_tasks_00(molecule_instance): """Ensures an empty list is returned when the playbook is idempotent.""" output = textwrap.dedent("""\ PLAY [all] *********************************************************** GATHERING FACTS ****************************************************** ok: [check-command-01] TASK: [Idempotence test] ********************************************* ok: [check-command-01] PLAY RECAP *********************************************************** check-command-01: ok=3 changed=0 unreachable=0 failed=0 """) i = idempotence.Idempotence({}, {}, molecule_instance) ret = i._non_idempotent_tasks(output) assert ret == []
def test_non_idempotent_tasks_01(molecule_instance): """Ensures a non-idempotent task is detected.""" output = textwrap.dedent("""\ PLAY [all] *********************************************************** GATHERING FACTS ****************************************************** ok: [check-command-01] TASK: [Idempotence test] ********************************************* changed: [check-command-01] PLAY RECAP *********************************************************** check-command-01: ok=2 changed=1 unreachable=0 failed=0 """) i = idempotence.Idempotence({}, {}, molecule_instance) ret = i._non_idempotent_tasks(output) assert ret == ['* Idempotence test']
def _instance(patched_config_validate, config_instance): config_instance.state.change_state("converged", True) return idempotence.Idempotence(config_instance)
def idempotence_instance(config_instance): config_instance.state.change_state('converged', True) return idempotence.Idempotence(config_instance)