Files
user-system/internal/testdb/testdb.go

48 lines
1.2 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Package testdb provides a pure-Go SQLite helper for tests.
// It uses modernc.org/sqlite (CGO-free) via gorm.io/driver/sqlite's DriverName override.
package testdb
import (
"testing"
_ "modernc.org/sqlite" // 注册纯Go SQLite驱动驱动名 "sqlite"
gormsqlite "gorm.io/driver/sqlite"
"gorm.io/gorm"
"gorm.io/gorm/logger"
)
// Open 使用 modernc.org/sqlite纯Go无需CGO打开内存测试数据库。
// 驱动名必须是 "sqlite"modernc 注册),而非 gorm 默认的 "sqlite3"mattn/CGO
func Open(t testing.TB) *gorm.DB {
t.Helper()
db, err := gorm.Open(gormsqlite.New(gormsqlite.Config{
DriverName: "sqlite",
DSN: "file::memory:?cache=shared&mode=memory",
}), &gorm.Config{
Logger: logger.Default.LogMode(logger.Silent),
})
if err != nil {
t.Skipf("跳过数据库测试SQLite不可用: %v", err)
}
return db
}
// OpenWith 使用自定义DSN
func OpenWith(t testing.TB, dsn string) *gorm.DB {
t.Helper()
db, err := gorm.Open(gormsqlite.New(gormsqlite.Config{
DriverName: "sqlite",
DSN: dsn,
}), &gorm.Config{
Logger: logger.Default.LogMode(logger.Silent),
})
if err != nil {
t.Skipf("跳过数据库测试SQLite不可用: %v", err)
}
return db
}