# 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 {