check test databases

This commit is contained in:
Lunny Xiao 2019-01-21 21:11:32 +08:00
parent 7f1493f27e
commit c2c3aab10a
No known key found for this signature in database
GPG Key ID: C3B7C91B632F738A
2 changed files with 32 additions and 11 deletions

View File

@ -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 ./...

View File

@ -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))