Skip to content

supabase test db silently reports Files=0, Tests=0 on Linux regardless of path argument #6206

Description

@edwinquick

Bug report

supabase test db on the Linux release build (tested: standalone Go binary from supabase_linux_amd64.tar.gz, and the .deb package -- both v2.100.1) reports:

Connecting to local database...
Files=0, Tests=0, 0 wallclock secs ( 0.00 usr + 0.00 sys = 0.00 CPU)
Result: NOTESTS

and exits 0 (success), regardless of what path is given -- even when the target files unambiguously exist and are readable.

Tried, all producing the identical Files=0 result:

  • Bare supabase test db (no path argument)
  • supabase test db supabase/tests/database (directory)
  • supabase test db supabase/tests/database/ (trailing slash)
  • supabase test db ./supabase/tests/database
  • supabase test db supabase/tests/database/*.sql (shell-expanded individual files)
  • supabase test db supabase/tests/database/one_specific_file.test.sql (single, definitely-existing file)
  • With and without --local

Reproduction (self-contained)

# Any Linux host with Docker
git clone <any repo with supabase/tests/database/*.test.sql pgTAP files>cd<repo>
curl -fsSL -o sb.tar.gz https://github.com/supabase/cli/releases/download/v2.100.1/supabase_linux_amd64.tar.gz
mkdir sbx && tar xzf sb.tar.gz -C sbx
./sbx/supabase-go start
ls supabase/tests/database/*.sql # confirms files exist
./sbx/supabase-go test db supabase/tests/database
# Files=0, Tests=0, Result: NOTESTS -- despite the ls above showing real files

Reproduced in three independent environments: a custom self-hosted GitHub Actions runner container, a completely unrelated freshly-created ubuntu:24.04 container (Docker socket bind-mounted, no other shared state), and via docker exec directly. Confirmed not an issue with the reproducing environment's file layout, working directory, or Docker mount configuration -- pwd, ls, and file content are all correct at the exact point test db is invoked.

What I ruled out

  • Not a missing-dependency issue: installed postgresql-client (psql) and libtap-parser-sourcehandler-pgtap-perl (pg_prove) -- no change in behavior.
  • Not a subprocess-shelling issue: supabase test db ... --debug shows zero trace of ever invoking pg_prove/psql/prove as a subprocess (no exec/cmd/prove mentions anywhere in the debug log). The Go binary appears to have its own native TAP-summary-formatted output (mimicking Test::Harness's classic Files=N, Tests=N, ... wallclock secs line) without ever calling out to Perl's prove/pg_prove at all.
  • Workaround confirmed: calling pg_prove directly against the same local Postgres connection (pg_prove --host 127.0.0.1 --port 54322 --username postgres --dbname postgres supabase/tests/database/*.sql) works correctly and finds/runs all files as expected. So the underlying Postgres instance, pgTAP extension, and test files are all fine -- this is specifically test db's own internal file-argument handling that's broken on the Linux build.
  • Not a stale/cached-state issue: reproduced on a database freshly created via supabase start moments earlier, in a container with no prior Supabase state at all.

Version

supabase --version
2.100.1

(also reproduced via the raw supabase-go binary from the same release tarball, so this isn't specific to the Bun-wrapped supabase entrypoint either)

Impact

Silent -- test db exits 0 with Result: NOTESTS, which most CI setups (including ours) don't treat as a failure. This means a CI job built around supabase test db on Linux can run zero tests indefinitely while reporting green, with no error surfaced anywhere. Given how easy this is to reproduce and how silent the failure mode is, this seems worth a loud warning/non-zero exit at minimum, even before the root cause is found.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions