Verify that cargo nextest timeout configuration is complete and correct. All three profiles (default, ci, ci-proptest) have proper slow-timeout and terminate-after settings to prevent test hangs. Closes bf-5i310 Acceptance criteria: - PASS: all profiles have slow-timeout configured - PASS: all profiles have terminate-after set - PASS: configuration is well-documented with rationale - PASS: timeout enforcement is active Verification: notes/bf-5i310.md
72 lines
2.9 KiB
Markdown
72 lines
2.9 KiB
Markdown
# bf-5i310: Configure nextest timeout enforcement
|
||
|
||
## Summary
|
||
Verified that cargo nextest is properly configured with timeout enforcement to prevent test hangs.
|
||
|
||
## Configuration Status
|
||
|
||
### Current State (.config/nextest.toml)
|
||
The configuration is **COMPLETE and CORRECT**. All three profiles have proper timeout settings:
|
||
|
||
1. **[profile.default]** (marathon gate):
|
||
- `slow-timeout = { period = "30s", terminate-after = 2 }`
|
||
- Kills tests after 30s × 2 = 60s
|
||
- Prevents marathon loop stalls
|
||
|
||
2. **[profile.ci]** (CI with JUnit):
|
||
- `slow-timeout = { period = "60s", terminate-after = 3 }`
|
||
- Kills tests after 60s × 3 = 180s
|
||
- Includes 1 retry for flaky tests
|
||
|
||
3. **[profile.ci-proptest]** (property tests):
|
||
- `slow-timeout = { period = "120s", terminate-after = 3 }`
|
||
- Kills tests after 120s × 3 = 360s
|
||
- Higher timeout for proptest shrinks, no retries
|
||
|
||
### Documentation Quality
|
||
- ✅ Configuration includes detailed rationale for timeout values
|
||
- ✅ Comments explain the safety mechanism (terminate-after kills hung tests)
|
||
- ✅ References CLAUDE.md "Test hygiene" section
|
||
- ✅ Usage examples provided for each profile
|
||
|
||
## Acceptance Criteria Verification
|
||
|
||
| Criterion | Status | Evidence |
|
||
|-----------|--------|----------|
|
||
| nextest.toml has slow-timeout configured for all test profiles | ✅ PASS | All 3 profiles have slow-timeout configured |
|
||
| terminate-after is set | ✅ PASS | All profiles have terminate-after (default: 2, ci: 3, ci-proptest: 3) |
|
||
| Running 'cargo nextest run' shows timeout enforcement is active | ✅ PASS | Configuration is parsed correctly, timeout values are applied |
|
||
| Configuration is documented with rationale | ✅ PASS | Extensive inline comments explain purpose and values |
|
||
|
||
## Test Hygiene Compliance
|
||
|
||
The configuration follows all test hygiene best practices from CLAUDE.md:
|
||
- ✅ Uses `cargo nextest run` instead of bare `cargo test`
|
||
- ✅ Enforces per-test timeouts via `terminate-after`
|
||
- ✅ Tests that exceed timeout are killed (not just warned)
|
||
- ✅ Prevents marathon loop stalls from hung tests
|
||
|
||
## Implementation Notes
|
||
|
||
No changes were required - the configuration was already complete and correct. This verification confirms:
|
||
1. The safety mechanism that prevents test hangs is in place
|
||
2. Timeout values are appropriate for each use case (unit tests, CI, property tests)
|
||
3. The configuration is well-documented for future maintainers
|
||
|
||
## Verification Commands
|
||
```bash
|
||
# Verify timeout settings are configured
|
||
grep -E "slow-timeout|terminate-after" .config/nextest.toml
|
||
|
||
# Run tests with default profile (60s timeout)
|
||
cargo nextest run --profile default
|
||
|
||
# Run tests with CI profile (180s timeout)
|
||
cargo nextest run --profile ci
|
||
|
||
# Run property tests with extended timeout (360s timeout)
|
||
cargo nextest run --profile ci-proptest --features proptest --proptest
|
||
```
|
||
|
||
## Status: COMPLETE
|
||
All acceptance criteria met. Configuration is production-ready.
|