feat(v2): add guarded execution state transitions

This commit is contained in:
2026-07-27 21:43:54 +02:00
parent 86d1ca168d
commit f3858ac43a
2 changed files with 51 additions and 0 deletions
+23
View File
@@ -0,0 +1,23 @@
from __future__ import annotations
from backup_tool.execution import ACTIVE_STATES, TERMINAL_STATES, TransitionError, transition
def test_transitions_are_monotonic_and_terminal_states_cannot_change() -> None:
assert transition("queued", "preparing") == "preparing"
assert transition("preparing", "running") == "running"
assert transition("running", "verifying") == "verifying"
assert transition("verifying", "committed") == "committed"
assert "committed" in TERMINAL_STATES
assert "queued" in ACTIVE_STATES
try:
transition("committed", "cancelled")
except TransitionError as error:
assert error.code == "invalid_transition"
else:
raise AssertionError("terminal execution changed state")
def test_cancellation_is_cooperative() -> None:
assert transition("running", "cancelling") == "cancelling"
assert transition("cancelling", "cancelled") == "cancelled"