背景
父任务:#132
Go encoding/json 对最大嵌套深度同时测试边界值和极深输入,确保超过限制时能稳定返回错误,而不是递归爆栈或长时间卡住。qjson 已有 max_depth、fuzz_depth 和 Lua options 测试,但还可以进一步补齐深度边界与极端输入的稳定性用例。
目标
扩展 max-depth stress tests,固定 qjson 在默认深度、配置上限、越界输入和极深输入下的行为。
重点覆盖:
- 默认
max_depth = 1024:1024 层接受,1025 层拒绝。
- 显式配置:小值边界、4096 上限、超过上限的 clamp/拒绝行为按当前设计固定。
- EAGER 和 LAZY 下 depth 错误行为一致。
- array-only、object-only、array/object mixed nesting。
- 极深但格式简单的输入能快速返回
QJSON_NESTING_TOO_DEEP,不递归爆栈。
- depth 错误 offset 稳定或有明确说明。
- 接近深度边界的 accepted 输入仍可通过 cursor API 访问,不触发递归下降风险。
建议实现
- PR CI 放轻量边界测试。
- 极深 stress case 如果耗时较高,可放 scheduled workflow 或 release checklist。
- 复用/扩展现有
fuzz_depth,同时补 deterministic integration tests。
- Lua wrapper 层也应至少覆盖 max_depth option 的错误传播。
验收标准
- 新增 deterministic depth boundary tests。
cargo test --release 和 cargo test --release --no-default-features 通过。
- EAGER/LAZY depth 行为一致性被测试覆盖。
- 极深输入的测试位置和运行频率有明确说明。
- 如需要调整
fuzz_depth corpus 或 scheduled workflow,同步更新文档。
背景
父任务:#132
Go
encoding/json对最大嵌套深度同时测试边界值和极深输入,确保超过限制时能稳定返回错误,而不是递归爆栈或长时间卡住。qjson 已有max_depth、fuzz_depth和 Lua options 测试,但还可以进一步补齐深度边界与极端输入的稳定性用例。目标
扩展 max-depth stress tests,固定 qjson 在默认深度、配置上限、越界输入和极深输入下的行为。
重点覆盖:
max_depth = 1024:1024 层接受,1025 层拒绝。QJSON_NESTING_TOO_DEEP,不递归爆栈。建议实现
fuzz_depth,同时补 deterministic integration tests。验收标准
cargo test --release和cargo test --release --no-default-features通过。fuzz_depthcorpus 或 scheduled workflow,同步更新文档。