def test_stepper_skip(fixture_isodate_now): # pylint: disable=unused-argument stepper = Stepper( { "StepOK": StepOK, "StepError": StepError, "StepWithDetails": StepWithDetails, "StepWithCondition": StepWithCondition, } ) shared_storage = {} stepper.add_step(StepOK("1", (), {}, shared_storage)) stepper.add_step( StepWithCondition("1", (), {"condition_step_name": "StepOK:1"}, shared_storage) ) stepper.run() stepper_dump1 = stepper.dump() expected_output1 = { "steps": [ { "name": "StepOK", "step_args": [], "step_kwargs": {}, "uid": "1", "details": {}, "stats": { "started": "isodate_now_1", "finished": "isodate_now_2", "skip": False, "skip_reason": "", "skipped": False, "state": "finished", }, "results": { "results": {"value": "result-of-useless-step"}, "errors": {}, }, }, { "name": "StepWithCondition", "step_args": [], "step_kwargs": {"condition_step_name": "StepOK:1"}, "uid": "1", "details": {}, "stats": { "started": "isodate_now_3", "finished": "isodate_now_4", "skip": True, "skip_reason": "", "skipped": True, "state": "finished", }, "results": {"results": {}, "errors": {}}, }, ], "shared_results": {}, } assert stepper_dump1 == expected_output1
def test_stepper_on_error(fixture_isodate_now): # pylint: disable=unused-argument stepper = Stepper( {"StepOK": StepOK, "StepError": StepError, "StepWithDetails": StepWithDetails} ) shared_storage = {} stepper.add_step(StepOK("1", (), {}, shared_storage)) stepper.add_step(StepError("1", (), {}, shared_storage)) on_error_clbk = mock.MagicMock() with pytest.raises(ValueError): stepper.run(on_error=on_error_clbk) assert len(on_error_clbk.mock_calls) > 0
def test_stepper_ok(): stepper = Stepper( {"StepOK": StepOK, "StepError": StepError, "StepWithDetails": StepWithDetails} ) shared_storage = {} stepper.add_step(StepOK("1", (), {}, shared_storage)) stepper.add_step(StepOK("2", (), {}, shared_storage)) stepper.run()
def test_stepper_rerun(fixture_isodate_now): # pylint: disable=unused-argument stepper = Stepper( { "StepOKCounter": StepOKCounter, "StepError": StepError, "StepError2": StepError2, "StepWithDetails": StepWithDetails, } ) shared_storage = {} stepper.add_step(StepOKCounter("1", (), {}, shared_storage)) stepper.add_step(StepError2("1", (2,), {}, shared_storage)) stepper.add_step(StepWithDetails("1", ("item1", "item2"), {}, shared_storage)) with pytest.raises(ValueError): stepper.run() stepper_dump1 = stepper.dump() stepper.run() stepper_dump2 = stepper.dump() expected_output1 = { "steps": [ { "name": "StepOKCounter", "step_args": [], "step_kwargs": {}, "uid": "1", "details": {"counter": 1}, "stats": { "started": "isodate_now_1", "finished": "isodate_now_2", "skip": False, "skip_reason": "", "skipped": False, "state": "finished", }, "results": {"results": {}, "errors": {}}, }, { "name": "StepError2", "step_args": [2], "step_kwargs": {}, "uid": "1", "details": {"counter": 1}, "stats": { "started": "isodate_now_3", "finished": "isodate_now_4", "skip": False, "skip_reason": "", "skipped": False, "state": "error", }, "results": {"results": {}, "errors": {}}, }, { "name": "StepWithDetails", "step_args": ["item1", "item2"], "step_kwargs": {}, "uid": "1", "details": {"items": ["ready", "ready"]}, "stats": { "started": None, "finished": None, "skip": False, "skip_reason": "", "skipped": None, "state": "ready", }, "results": {"results": {}, "errors": {}}, }, ], "shared_results": {}, } assert stepper_dump1 == expected_output1 expected_output2 = { "steps": [ { "name": "StepOKCounter", "step_args": [], "step_kwargs": {}, "uid": "1", "details": {"counter": 1}, "stats": { "started": None, "finished": "isodate_now_5", "skip": False, "skip_reason": "", "skipped": False, "state": "finished", }, "results": {"results": {}, "errors": {}}, }, { "name": "StepError2", "step_args": [2], "step_kwargs": {}, "uid": "1", "details": {"counter": 2}, "stats": { "started": None, "finished": "isodate_now_6", "skip": False, "skip_reason": "", "skipped": False, "state": "finished", }, "results": {"results": {}, "errors": {}}, }, { "name": "StepWithDetails", "step_args": ["item1", "item2"], "step_kwargs": {}, "uid": "1", "details": {"items": ["done", "done"]}, "stats": { "started": "isodate_now_7", "finished": "isodate_now_8", "skip": False, "skip_reason": "", "skipped": False, "state": "finished", }, "results": {"results": {}, "errors": {}}, }, ], "shared_results": {}, } assert stepper_dump2 == expected_output2
def test_stepper_load_started(fixture_isodate_now): # pylint: disable=unused-argument stepper = Stepper( {"StepOK": StepOK, "StepError": StepError, "StepWithDetails": StepWithDetails} ) shared_storage = {} stepper.add_step(StepOK("1", (), {}, shared_storage)) stepper.add_step(StepWithDetails("1", ("item1", "item2"), {}, shared_storage)) stepper.add_step(StepError("1", (), {}, shared_storage)) with pytest.raises(ValueError): stepper.run() stepper_dump1 = stepper.dump() stepper2 = Stepper( {"StepOK": StepOK, "StepError": StepError, "StepWithDetails": StepWithDetails} ) stepper2.load(stepper_dump1) stepper_dump2 = stepper2.dump() assert stepper_dump1 == stepper_dump2
def test_stepper_with_details(fixture_isodate_now): # pylint: disable=unused-argument stepper = Stepper( {"StepOK": StepOK, "StepError": StepError, "StepWithDetails": StepWithDetails} ) shared_storage = {} stepper.add_step(StepOK("1", (), {}, shared_storage)) stepper.add_step(StepWithDetails("1", ("item1", "item2"), {}, shared_storage)) stepper_dump1 = stepper.dump() stepper.run() stepper_dump2 = stepper.dump() expected_output1 = { "steps": [ { "name": "StepOK", "step_args": [], "step_kwargs": {}, "uid": "1", "details": {}, "stats": { "started": None, "finished": None, "skip": False, "skip_reason": "", "skipped": None, "state": "ready", }, "results": { "results": {"value": "result-of-useless-step"}, "errors": {}, }, }, { "name": "StepWithDetails", "step_args": ["item1", "item2"], "step_kwargs": {}, "uid": "1", "details": {"items": ["ready", "ready"]}, "stats": { "started": None, "finished": None, "skip": False, "skip_reason": "", "skipped": None, "state": "ready", }, "results": {"results": {}, "errors": {}}, }, ], "shared_results": {}, } assert stepper_dump1 == expected_output1 expected_output2 = { "steps": [ { "name": "StepOK", "step_args": [], "step_kwargs": {}, "uid": "1", "details": {}, "stats": { "started": "isodate_now_1", "finished": "isodate_now_2", "skip": False, "skip_reason": "", "skipped": False, "state": "finished", }, "results": { "results": {"value": "result-of-useless-step"}, "errors": {}, }, }, { "name": "StepWithDetails", "step_args": ["item1", "item2"], "step_kwargs": {}, "uid": "1", "details": {"items": ["done", "done"]}, "stats": { "started": "isodate_now_3", "finished": "isodate_now_4", "skip": False, "skip_reason": "", "skipped": False, "state": "finished", }, "results": {"results": {}, "errors": {}}, }, ], "shared_results": {}, } assert stepper_dump2 == expected_output2
def test_stepper_ok_dump(fixture_isodate_now): # pylint: disable=unused-argument stepper = Stepper( {"StepOK": StepOK, "StepError": StepError, "StepWithDetails": StepWithDetails} ) shared_storage = {} stepper.add_step(StepOK("1", (Secret("password"),), {}, shared_storage)) stepper.add_step(StepOK("2", ("foo param",), {}, shared_storage)) stepper_dump1 = stepper.dump() stepper.run() stepper_dump2 = stepper.dump() expected_output1 = { "steps": [ { "name": "StepOK", "step_args": ["*CENSORED*"], "step_kwargs": {}, "uid": "1", "details": {}, "stats": { "started": None, "skip": False, "skip_reason": "", "finished": None, "skipped": None, "state": "ready", }, "results": { "results": {"value": "result-of-useless-step"}, "errors": {}, }, }, { "name": "StepOK", "step_args": ["foo param"], "step_kwargs": {}, "uid": "2", "details": {}, "stats": { "started": None, "skip": False, "skip_reason": "", "finished": None, "skipped": None, "state": "ready", }, "results": { "results": {"value": "result-of-useless-step"}, "errors": {}, }, }, ], "shared_results": {}, } assert stepper_dump1 == expected_output1 expected_output2 = { "steps": [ { "name": "StepOK", "step_args": ["*CENSORED*"], "step_kwargs": {}, "uid": "1", "details": {}, "stats": { "started": "isodate_now_1", "finished": "isodate_now_2", "skip": False, "skip_reason": "", "skipped": False, "state": "finished", }, "results": { "results": {"value": "result-of-useless-step"}, "errors": {}, }, }, { "name": "StepOK", "step_args": ["foo param"], "step_kwargs": {}, "uid": "2", "details": {}, "stats": { "started": "isodate_now_3", "finished": "isodate_now_4", "skip": False, "skip_reason": "", "skipped": False, "state": "finished", }, "results": { "results": {"value": "result-of-useless-step"}, "errors": {}, }, }, ], "shared_results": {}, } assert stepper_dump2 == expected_output2