package postgres_test import ( "context" "crypto/sha256" "encoding/hex" "net/url" "testing" "github.com/jackc/pgx/v5/pgxpool" ) func isolatedExternalIntegrationDatabaseURL(t *testing.T, databaseURL string) string { t.Helper() if databaseURL == "" { return "" } parsed, err := url.Parse(databaseURL) if err != nil || parsed.Scheme == "" || parsed.Host == "" { t.Fatalf("TEST_DATABASE_URL must be a PostgreSQL URL: %v", err) } digest := sha256.Sum256([]byte(t.Name())) schema := "kgtestx_" + hex.EncodeToString(digest[:8]) ctx := context.Background() admin, err := pgxpool.New(ctx, databaseURL) if err != nil { t.Fatalf("connect integration database: %v", err) } defer admin.Close() if _, err := admin.Exec(ctx, "CREATE SCHEMA "+schema); err != nil { t.Fatalf("create isolated integration schema: %v", err) } t.Cleanup(func() { cleanup, err := pgxpool.New(context.Background(), databaseURL) if err == nil { _, _ = cleanup.Exec(context.Background(), "DROP SCHEMA IF EXISTS "+schema+" CASCADE") cleanup.Close() } }) query := parsed.Query() query.Set("search_path", schema) parsed.RawQuery = query.Encode() return parsed.String() }