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

supabase / supabase-swift / 35205236753
90%

Build:
DEFAULT BRANCH: main
Ran 17 Sep 2026 09:32AM UTC
Jobs 1
Files 134
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

17 Sep 2026 09:27AM UTC coverage: 88.867% (-0.2%) from 89.084%
35205236753

push

github

web-flow
docs: spell out that a cancelled request surfaces as .transport, not CancellationError (#1344)

* docs: spell out that a cancelled request surfaces as .transport

`URLSession`'s async APIs report a cancelled `Task` as `URLError(.cancelled)`,
not `CancellationError`, so a cancelled request is wrapped as the module error
with kind `.transport` like any other `URLError`. The V3 migration guide only
promised that `CancellationError` propagates as itself, which left a caller to
assume `catch is CancellationError` would match a cancellation. It does not.

Keep the wrapping and document it: the guide now shows the before/after for
checking the code on `underlyingError`, and says the break compiles silently.

Add one Storage test pinning the decision next to `cancellationIsNotWrapped`,
so the contrast between the two forms is visible at the point of confusion.

Retries already handle this: `RetryRequestInterceptor` skips a cancellation in
either form (SDK-1791), so nothing was needed there.

Fixes SDK-1849

* test(storage): cover cancellation through the real URLSessionTransport

`cancelledURLErrorIsWrapped()` stubs the transport, so it asserts the wrapping
but assumes the premise it rests on: that cancelling a `Task` makes `URLSession`
fail with `URLError(.cancelled)`. Nothing checked that, in Storage or in
`URLSessionTransportTests`.

Add an end-to-end test that runs a `URLSessionTransport`-backed request against
a delayed mock, cancels the enclosing `Task` once `MockingURLProtocol` reports
the request in flight, and asserts the caller sees `StorageError(.transport)`
with `URLError(.cancelled)` in `underlyingError`.

The request callback runs before the delay is scheduled, so the cancel always
lands mid-flight and the delay is never waited out — the test completes in ~12ms
and passed 10/10 consecutive runs.

10577 of 11902 relevant lines covered (88.87%)

54.42 hits per line

Coverage Regressions

Lines Coverage ∆ File
17
69.87
-4.3% Sources/RealtimeV2/WebSocket/URLSessionWebSocket.swift
8
87.07
-0.17% Sources/Auth/Internal/APIClient.swift
7
86.76
-10.29% Sources/Helpers/FoundationExtensions.swift
7
90.21
-0.1% Sources/RealtimeV2/ConnectionManager.swift
5
50.0
0.0% Sources/Auth/Internal/FixedWidthInteger+Random.swift
3
93.2
0.0% Sources/Helpers/HTTP/URLSessionTransport.swift
2
98.39
0.0% Sources/PostgREST/Legacy/PostgrestClient.swift
1
98.28
-1.72% Sources/Helpers/HTTP/RetryRequestInterceptor.swift
Jobs
ID Job ID Ran Files Coverage
1 35205236753.1 17 Sep 2026 09:32AM UTC 134
88.87
GitHub Action Run
Source Files on build 35205236753
  • Tree
  • List 134
  • Changed 17
  • Source Changed 10
  • Coverage Changed 14
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #35205236753
  • 617e42c8 on github
  • Prev Build on main (#35162080492)
  • Next Build on main (#35210399762)
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