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

vocdoni / saas-backend / 28011667355
63%

Build:
DEFAULT BRANCH: main
Ran 23 Jun 2026 08:11AM UTC
Jobs 1
Files 107
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

23 Jun 2026 08:04AM UTC coverage: 61.746% (+0.2%) from 61.586%
28011667355

push

github

p4u
fix(notifications): expose per-item delivery await; remove test races

Making notification sends fire-and-forget broke the happens-before the
test suite relied on: a handler enqueued an email and returned before the
queue worker delivered it, so waitForEmail raced the worker (and, under
load, the circuit breaker could stall delivery past the poll budget).
This was latent until rebasing onto main's heavier concurrent workload
tipped it into consistent CI failures, on both the API mail path and the
CSP OTP-challenge path.

- notifications.Queue: add an optional per-item done channel and a
  PushWait(item) returning a <-chan signalled exactly once when the item
  reaches its terminal outcome (delivered or given up).
- csp/notifications.Queue (wrapper): add PushWait delegating to the inner
  queue; results still forwarded to NotificationsSent.
- api: Config.NotificationsSyncDelivery; when set, sendMail blocks on
  PushWait until delivery completes (bounded by request ctx + 30s cap).
- csp: Config.SyncDelivery; when set, BundleAuthToken/ResendChallenge
  block until the challenge is delivered (bounded by service ctx + 30s).
- both default OFF — production stays fire-and-forget.
- api tests enable both flags, so a handler that sends mail then returns
  guarantees the mail is in the fake inbox before the response is
  observed — restoring deterministic happens-before with no widened polls
  and immune to the breaker-stall path.
- add Queue.PushWait unit tests (success and give-up outcomes).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

52 of 66 new or added lines in 6 files covered. (78.79%)

284 existing lines in 11 files now uncovered.

9310 of 15078 relevant lines covered (61.75%)

44.05 hits per line

Uncovered Changes

Lines Coverage ∆ File
8
62.22
-7.78% api/notifications.go
4
78.38
-4.08% csp/csp.go
2
86.67
notifications/queue.go

Coverage Regressions

Lines Coverage ∆ File
102
55.41
-0.75% api/users.go
65
55.4
0.21% api/organization_users.go
43
71.6
-0.07% api/organizations.go
18
0.0
0.0% cmd/service/main.go
15
92.52
-1.83% api/api.go
12
78.38
-4.08% csp/csp.go
8
82.24
0.0% db/types.go
7
81.25
-6.25% csp/notifications/challenge.go
6
62.22
-7.78% api/notifications.go
6
91.04
7.14% csp/notifications/queue.go
2
67.05
0.25% csp/auth.go
Jobs
ID Job ID Ran Files Coverage
1 28011667355.1 23 Jun 2026 08:11AM UTC 107
61.75
GitHub Action Run
Source Files on build 28011667355
  • Tree
  • List 107
  • Changed 12
  • Source Changed 0
  • Coverage Changed 12
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 7c9741a4 on github
  • Prev Build on main (#27957160043)
  • Next Build on main (#28012901941)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc