|
@@ -0,0 +1,78 @@
|
|
|
|
|
+package xorm
|
|
|
|
|
+
|
|
|
|
|
+import (
|
|
|
|
|
+ "errors"
|
|
|
|
|
+ "flag"
|
|
|
|
|
+ "os"
|
|
|
|
|
+ "testing"
|
|
|
|
|
+
|
|
|
|
|
+ _ "github.com/mattn/go-sqlite3"
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
|
|
+var (
|
|
|
|
|
+ testEngine *Engine
|
|
|
|
|
+ dbType string
|
|
|
|
|
+ connStr string
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
|
|
+func prepareSqlite3Engine() error {
|
|
|
|
|
+ //if testEngine == nil {
|
|
|
|
|
+ os.Remove("./test.db")
|
|
|
|
|
+ var err error
|
|
|
|
|
+ testEngine, err = NewEngine("sqlite3", "./test.db")
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return err
|
|
|
|
|
+ }
|
|
|
|
|
+ testEngine.ShowSQL(*showSQL)
|
|
|
|
|
+ //}
|
|
|
|
|
+ return nil
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func prepareMysqlEngine() error {
|
|
|
|
|
+ if testEngine == nil {
|
|
|
|
|
+ var err error
|
|
|
|
|
+ testEngine, err = NewEngine("mysql", connStr)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return err
|
|
|
|
|
+ }
|
|
|
|
|
+ testEngine.ShowSQL(*showSQL)
|
|
|
|
|
+ _, err = testEngine.Exec("DROP DATABASE")
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return err
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return nil
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func prepareEngine() error {
|
|
|
|
|
+ if dbType == "sqlite" {
|
|
|
|
|
+ return prepareSqlite3Engine()
|
|
|
|
|
+ } else if dbType == "mysql" {
|
|
|
|
|
+ return prepareMysqlEngine()
|
|
|
|
|
+ }
|
|
|
|
|
+ return errors.New("Unknown test database driver")
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+var (
|
|
|
|
|
+ db = flag.String("db", "sqlite", "the tested database")
|
|
|
|
|
+ showSQL = flag.Bool("show_sql", true, "show generated SQLs")
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
|
|
+func TestMain(m *testing.M) {
|
|
|
|
|
+ flag.Parse()
|
|
|
|
|
+
|
|
|
|
|
+ if db != nil {
|
|
|
|
|
+ dbType = *db
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if err := prepareEngine(); err != nil {
|
|
|
|
|
+ panic(err)
|
|
|
|
|
+ }
|
|
|
|
|
+ os.Exit(m.Run())
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func TestPing(t *testing.T) {
|
|
|
|
|
+ if err := testEngine.Ping(); err != nil {
|
|
|
|
|
+ t.Fatal(err)
|
|
|
|
|
+ }
|
|
|
|
|
+}
|