Files
user-system/internal/testdb/testdb.go
long-agent 582ad7a069 test: add comprehensive test coverage and improve code quality
- Add new test files for auth, service, and handler modules
- Improve test organization and coverage
- Refactor code for better maintainability
- Add captcha, settings, stats, and theme handler tests
- Add auth module tests (CAS, OAuth, password, SSO, state)
- Add service layer tests for auth, export, permissions, roles
- All Go tests pass (exit code 0)
- All frontend tests pass (325 tests in 59 files)
2026-04-17 20:43:50 +08:00

48 lines
1.2 KiB
Go
Raw 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"
gormsqlite "gorm.io/driver/sqlite"
"gorm.io/gorm"
"gorm.io/gorm/logger"
_ "modernc.org/sqlite" // 注册纯Go SQLite驱动驱动名 "sqlite"
)
// 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
}