fix(flr): partition-rooted FLR paths + agent/intent in checkpoint names (#2)

This commit was merged in pull request #2.
This commit is contained in:
2026-09-21 13:42:36 -04:00
parent 2473d22d2e
commit 108e919dcb
8 changed files with 243 additions and 28 deletions
+37 -9
View File
@@ -1,18 +1,46 @@
from datetime import UTC, datetime
from zerto_rewind_mcp.checkpoints import checkpoint_id, checkpoint_tag, make_tag
from zerto_rewind_mcp.checkpoints import (
TAG_MAX_LEN,
checkpoint_id,
checkpoint_tag,
make_tag,
)
WHEN = datetime(2026, 9, 21, 15, 4, 5, tzinfo=UTC)
def test_tag_format():
when = datetime(2026, 9, 21, 15, 4, 5, tzinfo=UTC)
tag = make_tag("codex", "chg-99", when)
assert tag == "ai:codex:chg-99:20260921T150405Z"
def test_tag_describes_agent_and_action():
tag = make_tag(
"claude",
"chg-99",
WHEN,
action="edit /home/justin/app-config.yaml",
vm_name="jp-ubuntu",
)
assert tag == (
"ai:claude | edit /home/justin/app-config.yaml | vm=jp-ubuntu "
"| change=chg-99 | 20260921T150405Z"
)
def test_tag_strips_junk():
tag = make_tag("agent one", "path/with spaces", datetime(2026, 1, 1, tzinfo=UTC))
assert " " not in tag
assert tag.startswith("ai:agent-one:path-with-spaces:")
def test_tag_without_action_or_vm():
assert make_tag("codex", "chg-99", WHEN) == "ai:codex | change=chg-99 | 20260921T150405Z"
def test_tag_keeps_separators_unambiguous():
# ';' is what Zerto appends to its own tags; '|' is our field separator.
tag = make_tag("a;b", "c|d", WHEN, action="rm -rf /tmp;x", vm_name="v|m")
assert tag.count(" | ") == 4
assert ";" not in tag
def test_tag_collapses_whitespace_and_caps_length():
tag = make_tag("agent one", "chg 1", WHEN, action="do\n many things")
assert "\n" not in tag
assert "do many things" in tag
long_tag = make_tag("a" * 200, "b" * 200, WHEN, action="c" * 400)
assert len(long_tag) <= TAG_MAX_LEN
def test_checkpoint_row_keys():