feat(slice4): metadata sidecar git read/write helpers — dual-read + lazy-migrate ops (§22.4a)
apply_values, EntryGitState, read_entry_from_git, write_entry_files, sidecar_path_for. Plus the SLICE-4 implementation plan. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -197,3 +197,27 @@ def test_sidecar_filename_helpers():
|
||||
assert metadata.is_sidecar("view-metrics.meta.yaml") is True
|
||||
assert metadata.is_sidecar("view-metrics.md") is False
|
||||
assert metadata.slug_of_sidecar("view-metrics.meta.yaml") == "view-metrics"
|
||||
|
||||
|
||||
# ---- SLICE-4: sidecar_path_for + apply_values ----
|
||||
|
||||
def test_sidecar_path_for_derives_sibling():
|
||||
assert metadata.sidecar_path_for("rfcs/alpha.md") == "rfcs/alpha.meta.yaml"
|
||||
assert metadata.sidecar_path_for("x/y/beta.md") == "x/y/beta.meta.yaml"
|
||||
|
||||
|
||||
def test_apply_values_updates_known_and_extra_fields():
|
||||
e = entry_mod.parse(LEGACY_MD) # has tags + extra priority/owner
|
||||
e2 = metadata.apply_values(e, {"tags": ["x"], "priority": "P0", "owner": "sam"})
|
||||
assert e2.tags == ["x"]
|
||||
assert e2.extra["priority"] == "P0"
|
||||
assert e2.extra["owner"] == "sam"
|
||||
# body preserved unchanged
|
||||
assert e2.body == e.body
|
||||
|
||||
|
||||
def test_apply_values_preserves_unspecified_keys():
|
||||
e = entry_mod.parse(LEGACY_MD)
|
||||
e2 = metadata.apply_values(e, {"priority": "P0"})
|
||||
assert e2.tags == e.tags # untouched
|
||||
assert e2.extra["owner"] == "hasan" # untouched
|
||||
|
||||
Reference in New Issue
Block a user