diff --git a/store/test/containers.go b/store/test/containers.go index 485f59709..e9760b6a1 100644 --- a/store/test/containers.go +++ b/store/test/containers.go @@ -67,12 +67,23 @@ func getTestNetwork(ctx context.Context) (*testcontainers.DockerNetwork, error) return testDockerNetwork.Load(), networkErr } +func requireTestNetwork(ctx context.Context) (*testcontainers.DockerNetwork, error) { + nw, err := getTestNetwork(ctx) + if err != nil { + return nil, errors.Wrap(err, "failed to create test network") + } + if nw == nil { + return nil, errors.New("test network is unavailable") + } + return nw, nil +} + // GetMySQLDSN starts a MySQL container (if not already running) and creates a fresh database for this test. func GetMySQLDSN(t *testing.T) string { ctx := context.Background() mysqlOnce.Do(func() { - nw, err := getTestNetwork(ctx) + nw, err := requireTestNetwork(ctx) if err != nil { t.Fatalf("failed to create test network: %v", err) } @@ -172,7 +183,7 @@ func GetPostgresDSN(t *testing.T) string { ctx := context.Background() postgresOnce.Do(func() { - nw, err := getTestNetwork(ctx) + nw, err := requireTestNetwork(ctx) if err != nil { t.Fatalf("failed to create test network: %v", err) } @@ -269,9 +280,9 @@ func StartMemosContainer(ctx context.Context, cfg MemosContainerConfig) (testcon "MEMOS_MODE": "prod", } - nw, err := getTestNetwork(ctx) + nw, err := requireTestNetwork(ctx) if err != nil { - return nil, errors.Wrap(err, "failed to create test network") + return nil, err } var opts []testcontainers.ContainerCustomizer diff --git a/store/test/migrator_upgrade_test.go b/store/test/migrator_upgrade_test.go index b0b56eac4..4b8254ed1 100644 --- a/store/test/migrator_upgrade_test.go +++ b/store/test/migrator_upgrade_test.go @@ -31,6 +31,11 @@ func TestMigrationFromV0262PreservesLegacyData(t *testing.T) { t.Logf("Starting Memos %s container for %s schema bootstrap...", cfg.Version, driver) container, err := StartMemosContainer(ctx, cfg) require.NoError(t, err, "failed to start v0.26.2 memos container") + t.Cleanup(func() { + if container != nil { + _ = container.Terminate(ctx) + } + }) legacyStore := NewTestingStoreWithDSN(ctx, t, driver, hostDSN) require.Eventually(t, func() bool { @@ -44,6 +49,7 @@ func TestMigrationFromV0262PreservesLegacyData(t *testing.T) { err = container.Terminate(ctx) require.NoError(t, err, "failed to stop v0.26.2 memos container") + container = nil db := openMigrationSQLDB(t, driver, hostDSN) defer db.Close()