Skip to content

test: 扩展 max-depth stress tests #140

@membphis

Description

@membphis

背景

父任务:#132

Go encoding/json 对最大嵌套深度同时测试边界值和极深输入,确保超过限制时能稳定返回错误,而不是递归爆栈或长时间卡住。qjson 已有 max_depthfuzz_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 --releasecargo test --release --no-default-features 通过。
  • EAGER/LAZY depth 行为一致性被测试覆盖。
  • 极深输入的测试位置和运行频率有明确说明。
  • 如需要调整 fuzz_depth corpus 或 scheduled workflow,同步更新文档。

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions