test(seahorse): use shared in-memory SQLite DB in tests to fix async compaction failures

This commit is contained in:
wenjie 2026-04-08 13:56:26 +08:00
parent 8dee0a38cd
commit 01a2846532

View file

@ -2,14 +2,26 @@ package seahorse
import ( import (
"database/sql" "database/sql"
"fmt"
"strings"
"sync/atomic"
"testing" "testing"
_ "modernc.org/sqlite" _ "modernc.org/sqlite"
) )
var testDBCounter uint64
func openTestDB(t *testing.T) *sql.DB { func openTestDB(t *testing.T) *sql.DB {
t.Helper() t.Helper()
db, err := sql.Open("sqlite", ":memory:")
n := atomic.AddUint64(&testDBCounter, 1)
testName := strings.NewReplacer("/", "_", " ", "_").Replace(t.Name())
// Use a shared in-memory database so concurrent goroutines/connections in tests
// observe the same schema/data.
dsn := fmt.Sprintf("file:seahorse_test_%s_%d?mode=memory&cache=shared", testName, n)
db, err := sql.Open("sqlite", dsn)
if err != nil { if err != nil {
t.Fatalf("open test db: %v", err) t.Fatalf("open test db: %v", err)
} }