summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorMartin Kagamino Lehoux <martin@lehoux.net>2026-08-14 21:28:20 +0200
committerMartin Kagamino Lehoux <martin@lehoux.net>2026-08-14 21:28:20 +0200
commitbf5d6aaec3da5cf06cdb33792a34ff155f01ef78 (patch)
tree6e921ab14f1231455b32c7de7fd5f118a1077524 /internal
parent9b62eec13fb391a3055253422cc58252db820d99 (diff)
refactor: centralize test database setup
Diffstat (limited to 'internal')
-rw-r--r--internal/dbtest/testdb.go38
1 files changed, 38 insertions, 0 deletions
diff --git a/internal/dbtest/testdb.go b/internal/dbtest/testdb.go
new file mode 100644
index 0000000..3e00e04
--- /dev/null
+++ b/internal/dbtest/testdb.go
@@ -0,0 +1,38 @@
+package dbtest
+
+import (
+ "database/sql"
+ "os"
+ "path/filepath"
+ "runtime"
+ "testing"
+
+ _ "github.com/mattn/go-sqlite3"
+)
+
+func New(t testing.TB) *sql.DB {
+ t.Helper()
+ db, err := sql.Open("sqlite3", ":memory:")
+ if err != nil {
+ t.Fatalf("open test database: %v", err)
+ }
+ db.SetMaxOpenConns(1)
+ t.Cleanup(func() {
+ if err := db.Close(); err != nil {
+ t.Errorf("close test database: %v", err)
+ }
+ })
+ schema, err := os.ReadFile(schemaPath())
+ if err != nil {
+ t.Fatalf("read test database schema: %v", err)
+ }
+ if _, err := db.Exec(string(schema)); err != nil {
+ t.Fatalf("apply test database schema: %v", err)
+ }
+ return db
+}
+
+func schemaPath() string {
+ _, filename, _, _ := runtime.Caller(0)
+ return filepath.Join(filepath.Dir(filename), "..", "..", "db", "schema.sql")
+}