fix: acceptance test 加载 IR 时应用 _normalize_rule 修复旧 IR 文件中的 schema 问题 - Closes #57
CI / test (pull_request) Successful in 8s
CI / test (pull_request) Successful in 8s
ir_data fixture 在加载 ir_final.json 后对每条 rule 调用 _normalize_rule, 确保旧 pipeline 输出也能受益于最新的防御性修复(非法 source type、 缺失 section 字段等)。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -140,9 +140,19 @@ def ir_path(request) -> str:
|
|||||||
|
|
||||||
@pytest.fixture(scope="session")
|
@pytest.fixture(scope="session")
|
||||||
def ir_data(ir_path: str) -> dict:
|
def ir_data(ir_path: str) -> dict:
|
||||||
"""Load the IR JSON data."""
|
"""Load the IR JSON data, normalizing each rule for defensive schema fixes."""
|
||||||
with open(ir_path, "r", encoding="utf-8") as f:
|
with open(ir_path, "r", encoding="utf-8") as f:
|
||||||
return json.load(f)
|
data = json.load(f)
|
||||||
|
|
||||||
|
# Apply normalize to every rule so old IR files benefit from latest fixes
|
||||||
|
# (invalid source types, missing section fields, trigger nulls, etc.)
|
||||||
|
sys.path.insert(0, str(_PROJECT_ROOT / "skills" / "ir_generation_skill"))
|
||||||
|
from step3_merge_and_audit import _normalize_rule
|
||||||
|
rules = data.get("rules", [])
|
||||||
|
if rules:
|
||||||
|
data["rules"] = [_normalize_rule(r) for r in rules]
|
||||||
|
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope="session")
|
@pytest.fixture(scope="session")
|
||||||
|
|||||||
Reference in New Issue
Block a user