mirror of
https://github.com/ncruces/go-sqlite3.git
synced 2026-01-12 05:59:14 +00:00
Refactor memdb API.
This commit is contained in:
@@ -6,7 +6,7 @@ import (
|
||||
|
||||
"github.com/ncruces/go-sqlite3"
|
||||
_ "github.com/ncruces/go-sqlite3/embed"
|
||||
"github.com/ncruces/go-sqlite3/sqlite3vfs"
|
||||
_ "github.com/ncruces/go-sqlite3/sqlite3memdb"
|
||||
)
|
||||
|
||||
func TestDB_memory(t *testing.T) {
|
||||
@@ -19,12 +19,8 @@ func TestDB_file(t *testing.T) {
|
||||
testDB(t, filepath.Join(t.TempDir(), "test.db"))
|
||||
}
|
||||
|
||||
func TestDB_VFS(t *testing.T) {
|
||||
sqlite3vfs.Register("memvfs", sqlite3vfs.MemoryVFS{
|
||||
"test.db": &sqlite3vfs.MemoryDB{},
|
||||
})
|
||||
defer sqlite3vfs.Unregister("memvfs")
|
||||
testDB(t, "file:test.db?vfs=memvfs")
|
||||
func TestDB_vfs(t *testing.T) {
|
||||
testDB(t, "file:test.db?vfs=memdb")
|
||||
}
|
||||
|
||||
func testDB(t *testing.T, name string) {
|
||||
|
||||
@@ -11,7 +11,7 @@ import (
|
||||
|
||||
"github.com/ncruces/go-sqlite3"
|
||||
_ "github.com/ncruces/go-sqlite3/embed"
|
||||
"github.com/ncruces/go-sqlite3/sqlite3vfs"
|
||||
_ "github.com/ncruces/go-sqlite3/sqlite3memdb"
|
||||
)
|
||||
|
||||
func TestParallel(t *testing.T) {
|
||||
@@ -40,12 +40,7 @@ func TestMemory(t *testing.T) {
|
||||
iter = 5000
|
||||
}
|
||||
|
||||
sqlite3vfs.Register("memvfs", sqlite3vfs.MemoryVFS{
|
||||
"test.db": &sqlite3vfs.MemoryDB{},
|
||||
})
|
||||
defer sqlite3vfs.Unregister("memvfs")
|
||||
|
||||
name := "file:test.db?vfs=memvfs" +
|
||||
name := "file:/test.db?vfs=memdb" +
|
||||
"&_pragma=busy_timeout(10000)" +
|
||||
"&_pragma=locking_mode(normal)" +
|
||||
"&_pragma=journal_mode(memory)" +
|
||||
|
||||
BIN
tests/testdata/test.db
vendored
BIN
tests/testdata/test.db
vendored
Binary file not shown.
@@ -2,27 +2,19 @@ package tests
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
_ "embed"
|
||||
|
||||
"github.com/ncruces/go-sqlite3"
|
||||
_ "github.com/ncruces/go-sqlite3/driver"
|
||||
_ "github.com/ncruces/go-sqlite3/embed"
|
||||
"github.com/ncruces/go-sqlite3/sqlite3memdb"
|
||||
"github.com/ncruces/go-sqlite3/sqlite3vfs"
|
||||
)
|
||||
|
||||
//go:embed testdata/test.db
|
||||
var testdata string
|
||||
|
||||
func TestMemoryVFS_Open_notfound(t *testing.T) {
|
||||
sqlite3vfs.Register("memory", sqlite3vfs.MemoryVFS{
|
||||
"test.db": &sqlite3vfs.MemoryDB{},
|
||||
})
|
||||
defer sqlite3vfs.Unregister("memory")
|
||||
sqlite3memdb.Delete("demo.db")
|
||||
|
||||
_, err := sqlite3.Open("file:demo.db?vfs=memory&mode=ro")
|
||||
_, err := sqlite3.Open("file:/demo.db?vfs=memdb&mode=ro")
|
||||
if err == nil {
|
||||
t.Error("want error")
|
||||
}
|
||||
@@ -31,36 +23,8 @@ func TestMemoryVFS_Open_notfound(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestMemoryVFS_Open_errors(t *testing.T) {
|
||||
sqlite3vfs.Register("memory", sqlite3vfs.MemoryVFS{
|
||||
"test.db": &sqlite3vfs.MemoryDB{MaxSize: 65536},
|
||||
})
|
||||
defer sqlite3vfs.Unregister("memory")
|
||||
|
||||
db, err := sqlite3.Open("file:test.db?vfs=memory")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
err = db.Exec(`CREATE TABLE IF NOT EXISTS test (col)`)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
err = db.Exec(`INSERT INTO test VALUES (zeroblob(65536))`)
|
||||
if err == nil {
|
||||
t.Error("want error")
|
||||
}
|
||||
if !errors.Is(err, sqlite3.FULL) {
|
||||
t.Errorf("got %v, want sqlite3.FULL", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestReaderVFS_Open_notfound(t *testing.T) {
|
||||
sqlite3vfs.Register("reader", sqlite3vfs.ReaderVFS{
|
||||
"test.db": sqlite3vfs.NewSizeReaderAt(strings.NewReader(testdata)),
|
||||
})
|
||||
sqlite3vfs.Register("reader", sqlite3vfs.ReaderVFS{})
|
||||
defer sqlite3vfs.Unregister("reader")
|
||||
|
||||
_, err := sqlite3.Open("file:demo.db?vfs=reader&mode=ro")
|
||||
|
||||
Reference in New Issue
Block a user