# HG changeset patch # User Christophe de Vienne <christophe@cdevienne.info> # Date 1666380797 -7200 # Fri Oct 21 21:33:17 2022 +0200 # Node ID 1a687f2d452daab915c2d2e9322060e7d83d2f51 # Parent ed4f5b9131ba71f9972f2f10f3311e87dcbeff76 database: add GetTestDBNoInit && GetDSN diff --git a/database/test.go b/database/test.go --- a/database/test.go +++ b/database/test.go @@ -16,6 +16,14 @@ const dbLockID = 15104 +func GetDSN(tb testing.TB) string { + dsn := os.Getenv("TEST_DB_DSN") + if dsn == "" { + tb.Fatal("Please define a TEST_DB_DSN environment variable") + } + return dsn +} + func clearDB(ctx context.Context, t testing.TB, c *sqlx.Conn, dsn string) { // Drop all tables, and reinit if _, err := c.ExecContext(ctx, "DROP SCHEMA IF EXISTS public CASCADE"); err != nil { @@ -71,15 +79,36 @@ require.NoError(db.tb, tx.Commit()) } +func GetTestDBNoInit(ctx context.Context, tb testing.TB) *TestDB { + var success bool + + dsn := GetDSN(tb) + + db, err := Open(dsn, 0) + require.NoError(tb, err) + + defer func() { + if !success { + if err := db.Close(); err != nil { + tb.Log("Error closing db:", err) + } + } + }() + + c, err := db.Connx(ctx) + require.NoError(tb, err) + + success = true + + return &TestDB{db, ctx, tb, c} +} + // GetTestDB creates a db and returns it. It must be closed within the test. // If it fails, t.Fatal() is called func GetTestDB(ctx context.Context, t testing.TB, sourceDriver source.Driver) *TestDB { var success bool - dsn := os.Getenv("TEST_DB_DSN") - if dsn == "" { - t.Fatal("Please define a TEST_DB_DSN environment variable") - } + dsn := GetDSN(t) db, err := Open(dsn, 0) if err != nil {