Repository navigation
fix: guard InRange from empty/inverted ranges - #982
Merged
Merged
Conversation
random.InRange(min, max) called rand.Intn(max-min), which panics when max <= min. Return min for degenerate ranges instead.
✅ Deploy Preview for devsydev canceled.
|
✅ Deploy Preview for images-devsy-sh canceled.
|
Up to standards ✅🟢 Issues
|
| Metric | Results |
|---|---|
| Complexity | 19 |
| Duplication | 0 |
AI Reviewer: run a review on demand. To trigger the first review automatically, go to your organization or repository integration settings. AI can make mistakes. Always validate suggestions.
TIP This summary will be updated as you push new changes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Package reviewed
pkg/random(system/platform/utility category).Issue found
random.InRange(min, max)is implemented asrand.Intn(max-min) + min.rand.Intnpanics when its argument is<= 0, so any caller passing an empty (max == min) or inverted (max < min) range crashes the whole program. The single current caller (pkg/credentials/start.go) always passes valid bounds, but the panic is a latent crash for any future misuse.The package also had no test file at all — zero coverage of
StringorInRange.Change
pkg/random/random.go— add a guard at the top ofInRange: whenmax <= min(degenerate/inverted range), returnmininstead of panicking. This is a small correctness fix; for valid inputs (max > min) behavior is unchanged.pkg/random/random_test.go(new) — adds table-driven tests:Stringlength (0/1/typical/long), charset (lowercase a–z only), and randomness (distinctness across 100 samples).InRangebounds (1000 samples within[min, max)) and the degenerate case (equal/inverted bounds returnmin).pkg/randomnow reports 100% statement coverage.Verification performed
task cli:format— clean.task cli:lint:ci— 0 issues (new-from-patch against origin/main).task cli:test—pkg/randompasses (ok ... coverage: 100.0%). The only failing suite ispkg/git(TestRepoClone*), a known pre-existing failure on origin/main unrelated to this change (this change does not touchpkg/git).This PR was created by an AI agent as part of an automated daily package review job.