diff --git a/tests/tests_test.go b/tests/tests_test.go index cb73d267..3db4eedf 100644 --- a/tests/tests_test.go +++ b/tests/tests_test.go @@ -38,6 +38,25 @@ func init() { DB.Exec("PRAGMA foreign_keys = ON") } } + if DB, err = OpenTestConnection2(); err != nil { + log.Printf("failed to connect database, got error %v", err) + os.Exit(1) + } else { + sqlDB, err := DB.DB() + if err == nil { + err = sqlDB.Ping() + } + + if err != nil { + log.Printf("failed to connect database, got error %v", err) + } + + RunMigrations() + if DB.Dialector.Name() == "sqlite" { + DB.Exec("PRAGMA foreign_keys = ON") + } + } + } func OpenTestConnection() (db *gorm.DB, err error) { @@ -85,6 +104,51 @@ func OpenTestConnection() (db *gorm.DB, err error) { return } +func OpenTestConnection2() (db *gorm.DB, err error) { + dbDSN := os.Getenv("GORM_DSN") + switch os.Getenv("GORM_DIALECT") { + case "mysql": + log.Println("testing mysql...") + if dbDSN == "" { + dbDSN = "gorm:gorm@tcp(localhost:9910)/gorm?charset=utf8&parseTime=True&loc=Local" + } + db, err = gorm.OpenD(mysql.Open(dbDSN)) + case "postgres": + log.Println("testing postgres...") + if dbDSN == "" { + dbDSN = "user=gorm password=gorm dbname=gorm host=localhost port=9920 sslmode=disable TimeZone=Asia/Shanghai" + } + db, err = gorm.OpenD(postgres.New(postgres.Config{ + DSN: dbDSN, + PreferSimpleProtocol: true, + })) + case "sqlserver": + // CREATE LOGIN gorm WITH PASSWORD = 'LoremIpsum86'; + // CREATE DATABASE gorm; + // USE gorm; + // CREATE USER gorm FROM LOGIN gorm; + // sp_changedbowner 'gorm'; + // npm install -g sql-cli + // mssql -u gorm -p LoremIpsum86 -d gorm -o 9930 + log.Println("testing sqlserver...") + if dbDSN == "" { + dbDSN = "sqlserver://gorm:LoremIpsum86@localhost:9930?database=gorm" + } + db, err = gorm.OpenD(sqlserver.Open(dbDSN)) + default: + log.Println("testing sqlite3...") + db, err = gorm.OpenD(sqlite.Open(filepath.Join(os.TempDir(), "gorm.db"))) + } + + if debug := os.Getenv("DEBUG"); debug == "true" { + db.Logger = db.Logger.LogMode(logger.Info) + } else if debug == "false" { + db.Logger = db.Logger.LogMode(logger.Silent) + } + + return +} + func RunMigrations() { var err error allModels := []interface{}{&User{}, &Account{}, &Pet{}, &Company{}, &Toy{}, &Language{}}