fix: remove global sync.Once to prevent DB state leakage in fuzz tests

This commit is contained in:
2026-01-12 22:34:36 +01:00
parent 49e6bb1e9d
commit 4dfe260953

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
} }