diff options
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/dbtest/testdb.go | 38 |
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") +} |