• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

yylego / restyoops / 32177953049
93%

Build:
DEFAULT BRANCH: main
Ran 18 Aug 2026 07:41PM UTC
Jobs 2
Files 8
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

18 Aug 2026 07:40PM UTC coverage: 92.553% (+27.2%) from 65.363%
32177953049

push

github

yyle88
redesign restyoops around resty's own retry engine

The package answered "is this retryable" and then stopped, leaving the caller to
write the loop, the sleeping and the counting by hand. resty already owns all
three. What resty leaves to its users is the judgement, and its out-of-box
judgement is wrong in ways that are easy to miss, each of which is now a test:

- a 500 is never repeated, so SetRetryCount looks set up yet does nothing
- resty's own AddRetryAfterErrorCondition silences retries on transport faults,
  because every condition overwrites resty's "repeat transport faults" default
- the same helper repeats a 404 four times
- Retry-After is never read, so a peer asking for 120s gets hit after 102ms
- an untrusted certificate is repeated, though trust never arrives that way
- a POST is repeated after a 500, though the order may already have been placed

Setup(client) now installs the judgement in one call and reuses resty's loop,
backoff and attempt counting rather than rebuilding them.

Fixed along the way:

- Oops implements error and unwraps to Cause, so it travels ordinary error paths
- Cause carries the real cause instead of the placeholder errors.New("HTTP")
- transport branches reordered: url.Error no longer shadows every precise
  judgement, and x509 / bad scheme / NXDOMAIN / canceled context all stop
- context.Canceled is no longer classified as a retryable network fault
- a stated zero wait stays a stated zero instead of becoming a default
- Kind is open: a custom kind no longer panics on the caller
- checks see the whole response, headers and request included, not just the body
- RetryMaxWaitTime is raised so a stated wait is not cut down to resty's 2s

Removed: the OopsIssue alias, six unused Kind predicates, internal/utils, and
the must dependency, which took zaplog / mutexmap / zap / multierr with it.
Dependencies went from ten to two.

Coverage 66.3% -> 92.3%, with the previously untested surface now covered:
content checks, ki... (continued)

337 of 363 new or added lines in 8 files covered. (92.84%)

2 existing lines in 1 file now uncovered.

348 of 376 relevant lines covered (92.55%)

61.22 hits per line

Uncovered Changes

Lines Coverage ∆ File
14
82.02
5.55% detect.go
10
93.67
-6.33% detective.go
2
84.62
restyoops.go

Coverage Regressions

Lines Coverage ∆ File
2
82.02
5.55% detect.go
Jobs
ID Job ID Ran Files Coverage
1 Go-1.25.x - 32177953049.1 18 Aug 2026 07:41PM UTC 8
92.55
GitHub Action Run
2 Go-stable - 32177953049.2 18 Aug 2026 07:41PM UTC 8
92.55
GitHub Action Run
Source Files on build 32177953049
  • Tree
  • List 8
  • Changed 4
  • Source Changed 0
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 0124bfd8 on github
  • Prev Build on main (#22914583874)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc