- 在 ResourceValidator 中添加 validate_template_vars 方法 - 在验证阶段检查用户是否提供了模板所需的必需变量 - 缺少必需变量时返回 ERROR 级别错误 - 添加 9 个单元测试用例验证功能 - 同步更新 OpenSpec 规格文档
54 lines
2.2 KiB
Markdown
54 lines
2.2 KiB
Markdown
## ADDED 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"
|