Compare commits

...

2 Commits

2 changed files with 75 additions and 80 deletions

View File

@@ -1,27 +1,20 @@
package fuzz package fuzz
import ( import (
"sync"
"gorm.io/driver/sqlite" "gorm.io/driver/sqlite"
"gorm.io/gorm" "gorm.io/gorm"
"gorm.io/gorm/logger" "gorm.io/gorm/logger"
) )
var (
fuzzDBOnce sync.Once
fuzzDB *gorm.DB
fuzzDBErr error
)
func GetFuzzDB() (*gorm.DB, error) { func GetFuzzDB() (*gorm.DB, error) {
fuzzDBOnce.Do(func() { db, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{
dbName := "file:memdb_fuzz?mode=memory&cache=shared&_journal_mode=WAL&_synchronous=NORMAL"
fuzzDB, fuzzDBErr = gorm.Open(sqlite.Open(dbName), &gorm.Config{
Logger: logger.Default.LogMode(logger.Silent), Logger: logger.Default.LogMode(logger.Silent),
}) })
if fuzzDBErr == nil { if err != nil {
fuzzDBErr = fuzzDB.Exec(` return nil, err
}
err = db.Exec(`
CREATE TABLE IF NOT EXISTS users ( CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT, id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL, username TEXT UNIQUE NOT NULL,
@@ -83,7 +76,6 @@ func GetFuzzDB() (*gorm.DB, error) {
FOREIGN KEY(user_id) REFERENCES users(id) FOREIGN KEY(user_id) REFERENCES users(id)
); );
`).Error `).Error
}
}) return db, err
return fuzzDB, fuzzDBErr
} }

View File

@@ -1704,8 +1704,11 @@ func TestGetFuzzDB(t *testing.T) {
if err2 != nil { if err2 != nil {
t.Fatalf("Second GetFuzzDB call failed: %v", err2) t.Fatalf("Second GetFuzzDB call failed: %v", err2)
} }
if db2 != db { if db2 == nil {
t.Fatal("GetFuzzDB should return the same database instance") t.Fatal("Second GetFuzzDB returned nil database")
}
if db2 == db {
t.Fatal("GetFuzzDB should return a new database instance for each call")
} }
} }