2018-11-30 02:46:30 +00:00
|
|
|
package database
|
|
|
|
|
|
|
|
import (
|
2018-12-01 17:17:01 +00:00
|
|
|
"fmt"
|
2018-11-30 02:46:30 +00:00
|
|
|
"os"
|
|
|
|
"testing"
|
2018-12-03 18:55:28 +00:00
|
|
|
|
|
|
|
"github.com/jmoiron/sqlx"
|
|
|
|
"github.com/mattn/go-sqlite3"
|
2018-11-30 02:46:30 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
|
|
|
TestDB = "testdata/gomarkdb_test.sqlite"
|
|
|
|
)
|
|
|
|
|
2018-12-03 18:55:28 +00:00
|
|
|
type LockedSQLXOpener struct {
|
|
|
|
handle *sqlx.DB
|
|
|
|
err sqlite3.Error
|
|
|
|
}
|
|
|
|
|
|
|
|
func (o *LockedSQLXOpener) Open(driver string, dsn string) error {
|
|
|
|
return o.err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
func (o *LockedSQLXOpener) Get() *sqlx.DB {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// We
|
|
|
|
func TestDBLocked(t *testing.T) {
|
|
|
|
lockedOpener := &LockedSQLXOpener{
|
|
|
|
handle: nil,
|
|
|
|
err: sqlite3.Error{Code: sqlite3.ErrBusy},
|
|
|
|
}
|
|
|
|
|
2018-12-01 17:17:01 +00:00
|
|
|
testDB := &DB{
|
|
|
|
Name: "test",
|
|
|
|
Path: fmt.Sprintf(MemcacheFmt, "test"),
|
|
|
|
EngineMode: DriverDefault,
|
2018-12-03 18:55:28 +00:00
|
|
|
SQLXOpener: lockedOpener,
|
|
|
|
}
|
|
|
|
|
|
|
|
_, err := testDB.Init()
|
|
|
|
if err != nil {
|
|
|
|
e, _ := err.(DBError).Err.(sqlite3.Error)
|
|
|
|
|
|
|
|
if e.Code == sqlite3.ErrBusy {
|
|
|
|
t.Error("should handle locked database")
|
|
|
|
} else {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
2018-12-01 17:17:01 +00:00
|
|
|
}
|
|
|
|
|
2018-11-30 02:46:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func TestGomarkDBCeate(t *testing.T) {
|
|
|
|
t.Error("if gomark.db does not exist create it")
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestSyncFromGomarkDB(t *testing.T) {
|
|
|
|
t.Error("sync from gomark db")
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestSyncToGomarkDB(t *testing.T) {
|
|
|
|
t.Error("sync to gomark db")
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestMain(m *testing.M) {
|
|
|
|
code := m.Run()
|
|
|
|
os.Exit(code)
|
|
|
|
}
|