"""Unit tests for executor structured-results parsing + cancel flagging.""" from steward.ansible.executor import _cancelled, cancel_run, parse_recap def test_parse_recap_extracts_per_host_counts(): lines = [ "PLAY RECAP *****************************************************************", "web01 : ok=5 changed=2 unreachable=0 failed=0 skipped=1 rescued=0", "db01 : ok=3 changed=0 unreachable=1 failed=0 skipped=0", ] hosts = parse_recap(lines) assert hosts["web01"] == {"ok": 5, "changed": 2, "unreachable": 0, "failed": 0, "skipped": 1} assert hosts["db01"]["unreachable"] == 1 assert hosts["db01"]["ok"] == 3 def test_parse_recap_ignores_lines_before_recap(): lines = [ "TASK [whatever] ****", "ok: [web01]", "PLAY RECAP ****", "web01 : ok=1 changed=0 unreachable=0 failed=0 skipped=0", ] assert set(parse_recap(lines)) == {"web01"} def test_parse_recap_empty_without_recap(): assert parse_recap(["TASK [x] ***", "ok: [h]"]) == {} def test_cancel_run_flags_untracked_run(): rid = "nonexistent-run-id" assert cancel_run(rid) is True assert rid in _cancelled _cancelled.discard(rid)