- 在 ResourceValidator 中添加 validate_template_vars 方法 - 在验证阶段检查用户是否提供了模板所需的必需变量 - 缺少必需变量时返回 ERROR 级别错误 - 添加 9 个单元测试用例验证功能 - 同步更新 OpenSpec 规格文档
2.4 KiB
2.4 KiB
Template Variable Validation
Purpose
验证器在检查阶段验证模板必需变量是否提供。当 YAML 使用模板时,系统验证用户是否提供了模板所需的必需变量,避免在转换阶段才发现问题。
Requirements
Requirement: 验证器必须检查模板必需变量
当 YAML 使用模板时,系统 SHALL 验证用户是否提供了模板所需的必需变量。
Scenario: 提供所有必需变量
- WHEN 模板定义了
vars: [{name: title, required: true}],且用户 YAML 提供了vars: {title: "Hello"} - THEN 验证通过,不报错
Scenario: 缺少必需变量
- WHEN 模板定义了
vars: [{name: title, required: true}],但用户 YAML 的vars中没有提供title - THEN 验证器报告 ERROR 级别错误:"缺少模板必需变量: title"
Scenario: 多个必需变量部分缺失
- WHEN 模板定义了
vars: [{name: title, required: true}, {name: subtitle, required: true}],但用户只提供了vars: {title: "Hello"} - THEN 验证器报告 ERROR 级别错误,包含所有缺少的必需变量
Scenario: 可选变量缺失
- WHEN 模板定义了
vars: [{name: subtitle, required: false}],用户没有提供该变量 - THEN 验证通过,不报错
Scenario: 提供默认值时缺少可选变量
- WHEN 模板定义了
vars: [{name: subtitle, required: false, default: ""}],用户没有提供该变量 - THEN 验证通过,不报错(使用默认值)
Requirement: 验证器必须支持多幻灯片模板变量检查
系统 SHALL 检查每个使用模板的幻灯片,确保其提供了模板所需的必需变量。
Scenario: 不同幻灯片使用不同模板
- WHEN 幻灯片 1 使用模板 A(需要变量 title),幻灯片 2 使用模板 B(需要变量 image)
- THEN 验证器分别检查每个幻灯片的变量,提供独立的错误信息
Scenario: 多个幻灯片使用同一模板
- WHEN 幻灯片 1 和幻灯片 2 都使用同一模板,都缺少必需变量
- THEN 验证器报告两个错误,分别对应各自的幻灯片位置
Requirement: 验证器必须提供清晰的错误位置信息
当缺少必需变量时,验证器 SHALL 在错误信息中包含幻灯片位置。
Scenario: 错误信息包含幻灯片位置
- WHEN 幻灯片 2 使用模板但缺少必需变量
- THEN 错误信息包含位置:"幻灯片 2: 缺少模板必需变量: title"