25 lines
1.6 KiB
Markdown
25 lines
1.6 KiB
Markdown
## MODIFIED Requirements
|
||
|
||
### Requirement: cmd checker 执行
|
||
系统 SHALL 按 cmd target 配置执行本地命令,记录执行耗时、退出码、stdout 和 stderr observation,并在执行失败时产生结构化错误信息。
|
||
|
||
#### Scenario: 命令正常退出
|
||
- **WHEN** cmd target 执行的进程正常退出且 exit code 为 0
|
||
- **THEN** 系统 SHALL 记录 `durationMs` 和包含 exitCode、stdoutPreview、stderrPreview 的 observation,并进入 expect 校验;API detail SHALL 为 `exitCode=0`
|
||
|
||
#### Scenario: 命令非零退出
|
||
- **WHEN** cmd target 执行的进程正常退出但 exit code 为 1
|
||
- **THEN** 系统 SHALL 记录包含 exitCode、stdoutPreview、stderrPreview 的 observation,并由 expect.exitCode 决定 matched 结果;API detail SHALL 为 `exitCode=1`
|
||
|
||
#### Scenario: 命令启动失败
|
||
- **WHEN** cmd target 的 exec 不存在或无法启动
|
||
- **THEN** 系统 SHALL 记录 `matched=false`,observation SHALL 为 null,并在 failure 中写入 kind=`error` 和可读错误信息
|
||
|
||
#### Scenario: 命令超时
|
||
- **WHEN** cmd target 在 timeout 时间内未结束
|
||
- **THEN** 系统 MUST 终止该子进程,记录 `matched=false`,并在 failure 中写入命令超时信息;如已收集输出片段,observation SHALL 包含 stdoutPreview、stderrPreview 和 error
|
||
|
||
#### Scenario: 命令输出超限
|
||
- **WHEN** cmd target 的 stdout 和 stderr 合计输出超过 `maxOutputBytes`
|
||
- **THEN** 系统 MUST 停止收集输出并终止该检查,记录 `matched=false`,并在 failure 中写入输出超限信息;observation SHALL 包含已截断输出预览和 error
|