Files

49 lines
1.1 KiB
Go

// Copyright 2026 Arctel.net
// SPDX-License-Identifier: Apache-2.0
package db
import (
"path/filepath"
"testing"
"github.com/glebarez/sqlite"
"gorm.io/gorm"
)
func TestEnableSQLiteWAL(t *testing.T) {
for _, tc := range []struct{ name, path, mode string }{
{"file", filepath.Join(t.TempDir(), "database.db"), "wal"},
{"memory", ":memory:", "memory"},
} {
t.Run(tc.name, func(t *testing.T) {
database, err := gorm.Open(sqlite.Open(tc.path), &gorm.Config{})
if err != nil {
t.Fatal(err)
}
sqlDB, err := database.DB()
if err != nil {
t.Fatal(err)
}
t.Cleanup(func() {
if err := sqlDB.Close(); err != nil {
t.Error(err)
}
})
if err := enableSQLiteWAL(database); err != nil {
t.Fatal(err)
}
var mode string
if err := database.Raw("PRAGMA journal_mode").Scan(&mode).Error; err != nil {
t.Fatal(err)
}
if mode != tc.mode {
t.Fatalf("journal mode = %q, want %q", mode, tc.mode)
}
if err := enableSQLiteWAL(database); err != nil {
t.Fatalf("enable WAL again: %v", err)
}
})
}
}