fix: patch checks full target span + marker injection/integrity (algo #8)
This commit is contained in:
@@ -309,6 +309,36 @@ class TestValidateSkill:
|
||||
result = validate_skill(orig, "no frontmatter body")
|
||||
assert not result.passed
|
||||
|
||||
def test_unpaired_appendix_marker_fails(self) -> None:
|
||||
"""evolved 出现孤立 APPENDIX_START(无配对 END)→ marker 完整性校验失败。"""
|
||||
orig = "---\nname: a\ndescription: d\ntask_type: t\n---\nbody body body"
|
||||
evol = f"---\nname: a\ndescription: d\ntask_type: t\n---\nbody {APPENDIX_START} body"
|
||||
result = validate_skill(orig, evol)
|
||||
assert not result.passed
|
||||
assert any("marker" in e.lower() or "配对" in e for e in result.errors)
|
||||
|
||||
def test_duplicate_momentum_marker_fails(self) -> None:
|
||||
"""evolved 出现两对 MOMENTUM marker → 完整性校验失败(各至多一对)。"""
|
||||
orig = "---\nname: a\ndescription: d\ntask_type: t\n---\nbody body body"
|
||||
evol = (
|
||||
"---\nname: a\ndescription: d\ntask_type: t\n---\n"
|
||||
f"{MOMENTUM_START}x{MOMENTUM_END} mid {MOMENTUM_START}y{MOMENTUM_END}"
|
||||
)
|
||||
result = validate_skill(orig, evol)
|
||||
assert not result.passed
|
||||
assert any("marker" in e.lower() or "配对" in e for e in result.errors)
|
||||
|
||||
def test_paired_markers_pass(self) -> None:
|
||||
"""evolved 含成对 appendix+momentum marker(各一对,顺序正确)→ 校验通过。"""
|
||||
body = "body " * 20
|
||||
orig = f"---\nname: a\ndescription: d\ntask_type: t\n---\n{body}"
|
||||
evol = (
|
||||
f"---\nname: a\ndescription: d\ntask_type: t\n---\n{body}"
|
||||
f"{APPENDIX_START}\n- n\n{APPENDIX_END}\n{MOMENTUM_START}\nm\n{MOMENTUM_END}"
|
||||
)
|
||||
result = validate_skill(orig, evol)
|
||||
assert result.passed, result.errors
|
||||
|
||||
|
||||
class TestValidateSystem:
|
||||
"""validate_system 测试。"""
|
||||
|
||||
Reference in New Issue
Block a user