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") }