From 545f18ff6c19227367625efd0b9bb61c80d327b5 Mon Sep 17 00:00:00 2001 From: avallete Date: Mon, 2 Nov 2026 15:56:07 +0100 Subject: [PATCH 1/2] test(cli): mask default postgres image in container input goldens Postgres bump PRs no longer need to regenerate these precedence goldens. Co-Authored-By: Claude Opus 5.5 --- ...local-container-inputs.precedence.integration.test.ts | 9 ++++++++- .../matched-remote-with-project-id-env.json | 6 +++--- .../matched-remote-with-shell-env.json | 6 +++--- .../local-container-inputs/matched-remote.json | 6 +++--- .../local-container-inputs/no-overrides.json | 6 +++--- .../local-container-inputs/project-dotenv.json | 6 +++--- .../local-container-inputs/shell-env.json | 6 +++--- 7 files changed, 26 insertions(+), 19 deletions(-) diff --git a/apps/cli/src/command-internal/db-bootstrap/local-container-inputs.precedence.integration.test.ts b/apps/cli/src/command-internal/db-bootstrap/local-container-inputs.precedence.integration.test.ts index 3cb27f822b..666a3b429a 100644 --- a/apps/cli/src/command-internal/db-bootstrap/local-container-inputs.precedence.integration.test.ts +++ b/apps/cli/src/command-internal/db-bootstrap/local-container-inputs.precedence.integration.test.ts @@ -4,6 +4,7 @@ import { ConfigProvider, Effect, FileSystem, Layer, Option, Path } from "effect" import { ChildProcessSpawner } from "effect/process"; import * as HttpClient from "effect/http/HttpClient"; import * as HttpClientResponse from "effect/http/HttpClientResponse"; +import { catalogPins } from "@supabase/stack/internal/artifacts"; import { cliConfigValuesTestLayer } from "../../../tests/helpers/config-values-layer.ts"; import { mockRuntimeInfo } from "../../../tests/helpers/mocks.ts"; @@ -16,6 +17,9 @@ import { buildLocalDbContainerInputs } from "./local-container-inputs.ts"; const TARGET_REF = "abcdefghijklmnopqrst"; const GOLDEN_DIR = "./testdata/config-precedence/local-container-inputs"; +const DEFAULT_POSTGRES_IMAGE = catalogPins().find( + (entry) => entry.service === "database" && entry.isDefault, +)!.pin.upstreamImage; const BASE_CONFIG = `project_id = "golden-shadow" @@ -192,7 +196,10 @@ describe("local container inputs precedence goldens", () => { projectEnvValues: configEnvOnly(setup.projectEnvValues ?? {}), }, }; - const goldenText = yield* goldenJson(golden, { [workdir]: "" }); + const goldenText = yield* goldenJson(golden, { + [workdir]: "", + [DEFAULT_POSTGRES_IMAGE]: "", + }); yield* Effect.promise(() => ctx.expect(goldenText).toMatchFileSnapshot(`${GOLDEN_DIR}/${fixture.golden}.json`), ); diff --git a/apps/cli/src/command-internal/db-bootstrap/testdata/config-precedence/local-container-inputs/matched-remote-with-project-id-env.json b/apps/cli/src/command-internal/db-bootstrap/testdata/config-precedence/local-container-inputs/matched-remote-with-project-id-env.json index dce71ff5c6..c7b02557a0 100644 --- a/apps/cli/src/command-internal/db-bootstrap/testdata/config-precedence/local-container-inputs/matched-remote-with-project-id-env.json +++ b/apps/cli/src/command-internal/db-bootstrap/testdata/config-precedence/local-container-inputs/matched-remote-with-project-id-env.json @@ -5,8 +5,8 @@ "dbHealthTimeoutSeconds": 120, "majorVersion": 17, "orioledbVersion": null, - "postgresConfigImage": "supabase/postgres:17.11.0.011", - "postgresImage": "supabase/postgres:17.11.0.011", + "postgresConfigImage": "", + "postgresImage": "", "realtimeEnabledForSetup": true, "realtimeIpVersion": "IPv4", "realtimeMaxHeaderLength": 4096, @@ -32,7 +32,7 @@ "experimental": false, "networkId": "supabase_network_shell-project-id", "postgresSpecBase": { - "configImage": "supabase/postgres:17.11.0.011", + "configImage": "", "db": { "health_timeout": "2m", "major_version": 17, diff --git a/apps/cli/src/command-internal/db-bootstrap/testdata/config-precedence/local-container-inputs/matched-remote-with-shell-env.json b/apps/cli/src/command-internal/db-bootstrap/testdata/config-precedence/local-container-inputs/matched-remote-with-shell-env.json index 4272d72177..0e84b1fc8b 100644 --- a/apps/cli/src/command-internal/db-bootstrap/testdata/config-precedence/local-container-inputs/matched-remote-with-shell-env.json +++ b/apps/cli/src/command-internal/db-bootstrap/testdata/config-precedence/local-container-inputs/matched-remote-with-shell-env.json @@ -5,8 +5,8 @@ "dbHealthTimeoutSeconds": 120, "majorVersion": 17, "orioledbVersion": null, - "postgresConfigImage": "supabase/postgres:17.11.0.011", - "postgresImage": "supabase/postgres:17.11.0.011", + "postgresConfigImage": "", + "postgresImage": "", "realtimeEnabledForSetup": false, "realtimeIpVersion": "IPv4", "realtimeMaxHeaderLength": 4096, @@ -32,7 +32,7 @@ "experimental": false, "networkId": "supabase_network_abcdefghijklmnopqrst", "postgresSpecBase": { - "configImage": "supabase/postgres:17.11.0.011", + "configImage": "", "db": { "health_timeout": "2m", "major_version": 17, diff --git a/apps/cli/src/command-internal/db-bootstrap/testdata/config-precedence/local-container-inputs/matched-remote.json b/apps/cli/src/command-internal/db-bootstrap/testdata/config-precedence/local-container-inputs/matched-remote.json index 980df2596f..1fb9218605 100644 --- a/apps/cli/src/command-internal/db-bootstrap/testdata/config-precedence/local-container-inputs/matched-remote.json +++ b/apps/cli/src/command-internal/db-bootstrap/testdata/config-precedence/local-container-inputs/matched-remote.json @@ -5,8 +5,8 @@ "dbHealthTimeoutSeconds": 120, "majorVersion": 17, "orioledbVersion": null, - "postgresConfigImage": "supabase/postgres:17.11.0.011", - "postgresImage": "supabase/postgres:17.11.0.011", + "postgresConfigImage": "", + "postgresImage": "", "realtimeEnabledForSetup": true, "realtimeIpVersion": "IPv4", "realtimeMaxHeaderLength": 4096, @@ -32,7 +32,7 @@ "experimental": false, "networkId": "supabase_network_abcdefghijklmnopqrst", "postgresSpecBase": { - "configImage": "supabase/postgres:17.11.0.011", + "configImage": "", "db": { "health_timeout": "2m", "major_version": 17, diff --git a/apps/cli/src/command-internal/db-bootstrap/testdata/config-precedence/local-container-inputs/no-overrides.json b/apps/cli/src/command-internal/db-bootstrap/testdata/config-precedence/local-container-inputs/no-overrides.json index 2f86ba9c79..b5814743f7 100644 --- a/apps/cli/src/command-internal/db-bootstrap/testdata/config-precedence/local-container-inputs/no-overrides.json +++ b/apps/cli/src/command-internal/db-bootstrap/testdata/config-precedence/local-container-inputs/no-overrides.json @@ -5,8 +5,8 @@ "dbHealthTimeoutSeconds": 120, "majorVersion": 17, "orioledbVersion": null, - "postgresConfigImage": "supabase/postgres:17.11.0.011", - "postgresImage": "supabase/postgres:17.11.0.011", + "postgresConfigImage": "", + "postgresImage": "", "realtimeEnabledForSetup": true, "realtimeIpVersion": "IPv4", "realtimeMaxHeaderLength": 4096, @@ -32,7 +32,7 @@ "experimental": false, "networkId": "supabase_network_golden-shadow", "postgresSpecBase": { - "configImage": "supabase/postgres:17.11.0.011", + "configImage": "", "db": { "health_timeout": "2m", "major_version": 17, diff --git a/apps/cli/src/command-internal/db-bootstrap/testdata/config-precedence/local-container-inputs/project-dotenv.json b/apps/cli/src/command-internal/db-bootstrap/testdata/config-precedence/local-container-inputs/project-dotenv.json index 3d85d0db5a..0443435132 100644 --- a/apps/cli/src/command-internal/db-bootstrap/testdata/config-precedence/local-container-inputs/project-dotenv.json +++ b/apps/cli/src/command-internal/db-bootstrap/testdata/config-precedence/local-container-inputs/project-dotenv.json @@ -5,8 +5,8 @@ "dbHealthTimeoutSeconds": 120, "majorVersion": 17, "orioledbVersion": null, - "postgresConfigImage": "supabase/postgres:17.11.0.011", - "postgresImage": "supabase/postgres:17.11.0.011", + "postgresConfigImage": "", + "postgresImage": "", "realtimeEnabledForSetup": false, "realtimeIpVersion": "IPv4", "realtimeMaxHeaderLength": 4096, @@ -32,7 +32,7 @@ "experimental": false, "networkId": "supabase_network_golden-shadow", "postgresSpecBase": { - "configImage": "supabase/postgres:17.11.0.011", + "configImage": "", "db": { "health_timeout": "2m", "major_version": 17, diff --git a/apps/cli/src/command-internal/db-bootstrap/testdata/config-precedence/local-container-inputs/shell-env.json b/apps/cli/src/command-internal/db-bootstrap/testdata/config-precedence/local-container-inputs/shell-env.json index a49d200a86..e271fcb6d9 100644 --- a/apps/cli/src/command-internal/db-bootstrap/testdata/config-precedence/local-container-inputs/shell-env.json +++ b/apps/cli/src/command-internal/db-bootstrap/testdata/config-precedence/local-container-inputs/shell-env.json @@ -5,8 +5,8 @@ "dbHealthTimeoutSeconds": 120, "majorVersion": 17, "orioledbVersion": null, - "postgresConfigImage": "supabase/postgres:17.11.0.011", - "postgresImage": "supabase/postgres:17.11.0.011", + "postgresConfigImage": "", + "postgresImage": "", "realtimeEnabledForSetup": false, "realtimeIpVersion": "IPv4", "realtimeMaxHeaderLength": 4096, @@ -32,7 +32,7 @@ "experimental": false, "networkId": "supabase_network_golden-shadow", "postgresSpecBase": { - "configImage": "supabase/postgres:17.11.0.011", + "configImage": "", "db": { "health_timeout": "2m", "major_version": 17, From 5f8ff0a602d5559ebd5f48cca869a0437423db34 Mon Sep 17 00:00:00 2001 From: avallete Date: Mon, 2 Nov 2026 16:01:59 +0100 Subject: [PATCH 2/2] test(cli): redact only exact default postgres image values Co-Authored-By: Claude Opus 5.5 --- .../local-container-inputs.precedence.integration.test.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/cli/src/command-internal/db-bootstrap/local-container-inputs.precedence.integration.test.ts b/apps/cli/src/command-internal/db-bootstrap/local-container-inputs.precedence.integration.test.ts index 666a3b429a..028f197b7a 100644 --- a/apps/cli/src/command-internal/db-bootstrap/local-container-inputs.precedence.integration.test.ts +++ b/apps/cli/src/command-internal/db-bootstrap/local-container-inputs.precedence.integration.test.ts @@ -196,10 +196,10 @@ describe("local container inputs precedence goldens", () => { projectEnvValues: configEnvOnly(setup.projectEnvValues ?? {}), }, }; - const goldenText = yield* goldenJson(golden, { - [workdir]: "", - [DEFAULT_POSTGRES_IMAGE]: "", - }); + const goldenText = (yield* goldenJson(golden, { [workdir]: "" })).replaceAll( + `"${DEFAULT_POSTGRES_IMAGE}"`, + `""`, + ); yield* Effect.promise(() => ctx.expect(goldenText).toMatchFileSnapshot(`${GOLDEN_DIR}/${fixture.golden}.json`), );