From c2c3aab10a347efb41381a9c016137e44f48d61e Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Mon, 21 Jan 2019 21:11:32 +0800 Subject: [PATCH] check test databases --- .circleci/config.yml | 12 +----------- xorm_test.go | 31 +++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index fcab6582..35b363c3 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -22,7 +22,7 @@ jobs: POSTGRES_USER: root POSTGRES_DB: xorm_test - - image: microsoft/mssql-server-linux:2017-CU11 + - image: microsoft/mssql-server-linux:latest environment: ACCEPT_EULA: Y SA_PASSWORD: yourStrong(!)Password @@ -30,16 +30,6 @@ jobs: working_directory: /go/src/github.com/go-xorm/xorm steps: - - run: - name: Wait for MSSQL - command: > - c=0; - for i in `seq 30`; do - echo "Waiting for mssql" - sqlcmd -H localhost -U sa -P "yourStrong(!)Password" -Q "CREATE DATABASE xorm_test" > /dev/null > /dev/null && c=0 && break || c=$? && sleep 1 - done; - exit $c - - checkout - run: go get -t -d -v ./... diff --git a/xorm_test.go b/xorm_test.go index 4e88dc40..e27d13ef 100644 --- a/xorm_test.go +++ b/xorm_test.go @@ -1,6 +1,7 @@ package xorm import ( + "database/sql" "flag" "fmt" "os" @@ -35,6 +36,36 @@ func createEngine(dbType, connStr string) error { var err error if !*cluster { + // create databases if not exist + db, err := sql.Open(dbType, connStr) + if err != nil { + return err + } + switch strings.ToUpper(dbType) { + case core.MSSQL: + if _, err = db.Exec("If(db_id(N'xorm_test') IS NULL) BEGIN CREATE DATABASE xorm_test; END;"); err != nil { + return fmt.Errorf("db.Exec: %v", err) + } + case core.POSTGRES: + rows, err := db.Query(fmt.Sprintf("SELECT 1 FROM pg_database WHERE datname = 'xorm_test'")) + if err != nil { + return fmt.Errorf("db.Query: %v", err) + } + defer rows.Close() + + if rows.Next() { + break + } + if _, err = db.Exec("CREATE DATABASE xorm_test"); err != nil { + return fmt.Errorf("db.Exec: %v", err) + } + case core.MYSQL: + if _, err = db.Exec("CREATE DATABASE IF NOT EXISTS xorm_test"); err != nil { + return fmt.Errorf("db.Exec: %v", err) + } + } + db.Close() + testEngine, err = NewEngine(dbType, connStr) } else { testEngine, err = NewEngineGroup(dbType, strings.Split(connStr, *splitter))