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

supabase / supabase-flutter / 32824434652
89%

Build:
DEFAULT BRANCH: main
Ran 25 Aug 2026 08:02AM UTC
Jobs 10
Files 120
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

25 Aug 2026 08:00AM UTC coverage: 88.649% (+0.009%) from 88.64%
32824434652

push

github

web-flow
fix(storage): normalize object paths consistently across all file operations (#1761)

## Problem

Path normalization (`_removeEmptyFolders`, which strips leading and
trailing `/` and collapses `//`) was applied only to `upload`,
`uploadBinary`, `uploadToSignedUrl`, `uploadBinaryToSignedUrl`,
`update`, and `updateBinary`.

It was not applied to `createSignedUrl`, `createSignedUploadUrl`,
`download`, `downloadStream`, `getMetadata`, `exists`, `getPublicUrl`,
or `purgeCache`; those only went through `_getFinalPath`, which
percent-encodes segments but did not strip slashes. The payload-based
operations `move`, `copy`, `remove`, `list`, and `createSignedUrls` sent
raw paths in their JSON bodies as well.

Result: `upload('/folder/a.png')` stores the object under
`folder/a.png`, but a subsequent `createSignedUrl('/folder/a.png')`,
`download('/folder/a.png')`, or `remove(['/folder/a.png'])` targeted a
different key and failed.

This mirrors the fixes in supabase-swift
([supabase/supabase-swift#1111](https://github.com/supabase/supabase-swift/pull/1111),
[supabase/supabase-swift#1108](https://github.com/supabase/supabase-swift/pull/1108))
and extends them to the payload-based operations.

## Fix

- `_getFinalPath` now runs `_removeEmptyFolders` before
percent-encoding, so every operation that builds an object URL through
it normalizes the path the same way as the upload methods.
- `_removeEmptyFolders` now collapses duplicate slashes before stripping
leading and trailing ones, so inputs like `//folder//file.txt//` fully
normalize to `folder/file.txt` (the previous order left a leading slash
behind for doubled leading slashes).
- `createSignedUploadUrl` cleans the path before building the request
URL and returns the cleaned path in `SignedUploadURLResponse.path`, so
the returned path matches the stored object key, mirroring the Swift
fix.
- `move`, `copy`, `remove`, `list`, and `createSignedUrls` normalize the
paths in their JSON bodies, so payload-based operat... (continued)

15 of 15 new or added lines in 1 file covered. (100.0%)

6029 of 6801 relevant lines covered (88.65%)

4.57 hits per line

Jobs
ID Job ID Ran Files Coverage
3 supabase_flutter - 32824434652.3 25 Aug 2026 08:02AM UTC 11
82.22
GitHub Action Run
4 supabase_storage - 32824434652.4 25 Aug 2026 08:04AM UTC 9
97.32
GitHub Action Run
5 supabase - 32824434652.5 25 Aug 2026 08:05AM UTC 14
93.57
GitHub Action Run
6 supabase_functions - 32824434652.6 25 Aug 2026 08:02AM UTC 4
97.83
GitHub Action Run
7 postgrest - 32824434652.7 25 Aug 2026 08:04AM UTC 11
84.59
GitHub Action Run
8 supabase_auth - 32824434652.8 25 Aug 2026 08:05AM UTC 30
90.69
GitHub Action Run
9 iceberg - 32824434652.9 25 Aug 2026 08:02AM UTC 6
68.52
GitHub Action Run
10 supabase_realtime - 32824434652.10 25 Aug 2026 08:05AM UTC 13
90.36
GitHub Action Run
2 yet_another_json_isolate - 32488229193.2 21 Aug 2026 01:43PM UTC 1
98.44
GitHub Action Run
8 supabase_common - 32709892111.8 24 Aug 2026 09:09AM UTC 21
86.96
GitHub Action Run
Source Files on build 32824434652
  • Tree
  • List 120
  • Changed 2
  • Source Changed 2
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #32824434652
  • f58c3d1f on github
  • Prev Build on main (#32823468489)
  • Next Build on main (#32832987965)
  • 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