Skip to content

fix(assert): handle saturated time differences in WithinDuration - #1978

Open
sergioperezcheco wants to merge 1 commit into
stretchr:masterfrom
sergioperezcheco:fix/within-duration-range-20261002
Open

sergioperezcheco wants to merge 1 commit into
stretchr:masterfrom
sergioperezcheco:fix/within-duration-range-20261002

Conversation

@sergioperezcheco

Copy link
Copy Markdown

Summary

Fix WithinDuration accepting time differences larger than the maximum representable duration.

Changes

Compare the actual time against expected.Add(-delta) and expected.Add(delta) instead of using the saturated result of time.Time.Sub for the decision. Negative tolerances are rejected before negation, including the minimum duration value. The existing failure message and public wrappers remain unchanged.

Motivation

For example, two dates 400 years apart currently pass with a tolerance of time.Duration(1<<63 - 1), although that tolerance is approximately 292 years. Regression tests cover both directions, inclusive boundaries, negative tolerances, clock/location differences, and the assert/require wrappers.

The regression tests fail on the original implementation and pass with this change. Locally, go test -race -count=1 ./..., go vet ./..., formatting, and generation checks pass on Go 1.26.4/macOS arm64. The older-Go and Linux CI matrix has not been run locally.

Related issues

No existing issue found for this saturation case.

Implemented with assistance from Hermes Agent.

Co-Authored-By: GPT-6.1-Sol <noreply@openai.com>
Signed-off-by: sergioperezcheco <checo520@outlook.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant