- 新增 tests/helpers.ts 的 rmRetry 工具函数,解决 SQLite 文件句柄未及时释放导致 afterAll 清理时 EBUSY 错误 - 修改通配符测试用例,使用 bun -e 替代 echo 命令,确保跨平台行为一致
26 lines
1.1 KiB
Markdown
26 lines
1.1 KiB
Markdown
# Capability: windows-test-compat
|
||
|
||
## Purpose
|
||
|
||
确保测试在 Windows 平台上的兼容性,包括文件句柄释放后的目录清理重试机制和跨平台命令测试约定。
|
||
|
||
## Requirements
|
||
|
||
### Requirement: 测试临时目录清理 SHALL 支持重试
|
||
|
||
使用 SQLite 数据库的测试 SHALL 在 `afterAll` 中使用带重试的目录删除机制,确保在 Windows 上文件句柄未及时释放时不会导致测试失败。
|
||
|
||
#### Scenario: Windows 上 SQLite 文件句柄延迟释放
|
||
|
||
- **WHEN** 测试在 Windows 上运行,`store.close()` 后立即尝试删除临时目录
|
||
- **THEN** 删除操作 SHALL 自动重试(最多 3 次,间隔 200ms),直到成功或耗尽重试次数
|
||
|
||
### Requirement: 命令检测器测试 SHALL 使用跨平台命令
|
||
|
||
命令检测器的测试 SHALL 使用 `bun -e` 脚本替代系统 `echo` 命令,确保测试断言在所有平台上行为一致。
|
||
|
||
#### Scenario: 验证非 shell 模式下特殊字符不被展开
|
||
|
||
- **WHEN** 通过 `Bun.spawn` 执行 `bun -e "console.log('*')"` 并检查 stdout 包含 `*`
|
||
- **THEN** 测试 SHALL 在 Windows 和 Linux 上均返回 `matched: true`
|