29 lines
948 B
Python
29 lines
948 B
Python
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"
|