43 lines
854 B
Go
43 lines
854 B
Go
|
|
package testutil
|
||
|
|
|
||
|
|
import (
|
||
|
|
"context"
|
||
|
|
"fmt"
|
||
|
|
"path/filepath"
|
||
|
|
"sync"
|
||
|
|
"testing"
|
||
|
|
|
||
|
|
"sub2api-cn-relay-manager/internal/store/sqlite"
|
||
|
|
)
|
||
|
|
|
||
|
|
var sqliteOpenMu sync.Mutex
|
||
|
|
|
||
|
|
func SQLiteTestDSN(t testing.TB, fileName string, disableForeignKeys bool) string {
|
||
|
|
t.Helper()
|
||
|
|
|
||
|
|
dsn := fmt.Sprintf("file:%s?_busy_timeout=5000", filepath.ToSlash(filepath.Join(t.TempDir(), fileName)))
|
||
|
|
if disableForeignKeys {
|
||
|
|
dsn += "&_pragma=foreign_keys(0)"
|
||
|
|
}
|
||
|
|
return dsn
|
||
|
|
}
|
||
|
|
|
||
|
|
func OpenSQLiteStore(t testing.TB, dsn string) *sqlite.DB {
|
||
|
|
t.Helper()
|
||
|
|
|
||
|
|
sqliteOpenMu.Lock()
|
||
|
|
store, err := sqlite.Open(context.Background(), dsn)
|
||
|
|
sqliteOpenMu.Unlock()
|
||
|
|
if err != nil {
|
||
|
|
t.Fatalf("sqlite.Open() error = %v", err)
|
||
|
|
}
|
||
|
|
return store
|
||
|
|
}
|
||
|
|
|
||
|
|
func CloseSQLiteStore(t testing.TB, store *sqlite.DB) {
|
||
|
|
t.Helper()
|
||
|
|
if err := store.Close(); err != nil {
|
||
|
|
t.Fatalf("store.Close() error = %v", err)
|
||
|
|
}
|
||
|
|
}
|