Skip to content

bug: tests.schema.json 缺少 setup 必填字段声明,与代码不一致 #89

@Gizele1

Description

@Gizele1

Summary

schemas/tests.schema.jsonexample_cases items 不要求 setup 字段,但 src/lash/test-runner.tsEXAMPLE_CASE_REQUIRED 集合包含 'setup'。两个校验入口标准不一致。

Evidence

JSON Schema (schemas/tests.schema.json:22-23):

"required": ["id", "suite_type", "module_ref", "requirement_refs",
             "description", "category", "ears_ref", "derivation",
             "input", "expected_output"]
             // ← 没有 "setup"

代码 (src/lash/test-runner.ts:21-33):

const EXAMPLE_CASE_REQUIRED = new Set([
  'id', 'suite_type', 'module_ref', 'requirement_refs',
  'description', 'category', 'ears_ref', 'derivation',
  'input', 'expected_output',
  'setup',           // ← 多了这个
]);

Impact

通过 JSON Schema 校验的 tests.json 可能被 validateTestsJson() 运行时拒绝:

  • AI agent 读 schema 生成 tests.json → JSON Schema 校验通过 → lash test 运行时报 missing required field: 'setup'
  • 外部工具(IDE 插件、CI 检查)基于 JSON Schema 做校验不会检查 setup

Fix

推荐选项 A:Schema 对齐代码

setup 加入 schemas/tests.schema.json:23required 数组:

"required": ["id", "suite_type", "module_ref", "requirement_refs",
             "description", "category", "ears_ref", "derivation",
             "input", "expected_output", "setup"]

Schema 已经定义了 setup 的类型 ("setup": { "type": "string" }, line 53),只是漏了标记为 required。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions