mirror of
https://github.com/pressly/goose.git
synced 2025-05-31 11:42:04 +00:00
Allow driver to be set from environment variable
This changeset support for allowing the database driver to be set from an environment variable. Added a unit test to confirm behavior. Resolves #31
This commit is contained in:
parent
91c768f7ca
commit
7bca6f6bd8
@ -16,3 +16,7 @@ customimport:
|
||||
open: customdriver open
|
||||
import: github.com/custom/driver
|
||||
dialect: mysql
|
||||
|
||||
environment_variable_config:
|
||||
driver: $DB_DRIVER
|
||||
open: $DATABASE_URL
|
||||
|
@ -41,6 +41,7 @@ func NewDBConf(p, env string, pgschema string) (*DBConf, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
drv = os.ExpandEnv(drv)
|
||||
|
||||
open, err := f.Get(fmt.Sprintf("%s.open", env))
|
||||
if err != nil {
|
||||
|
@ -1,7 +1,8 @@
|
||||
package goose
|
||||
|
||||
import (
|
||||
// "fmt"
|
||||
"os"
|
||||
"reflect"
|
||||
"testing"
|
||||
)
|
||||
|
||||
@ -35,3 +36,35 @@ func TestImportOverride(t *testing.T) {
|
||||
t.Errorf("bad custom import. got %v want %v", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDriverSetFromEnvironmentVariable(t *testing.T) {
|
||||
|
||||
databaseUrlEnvVariableKey := "DB_DRIVER"
|
||||
databaseUrlEnvVariableVal := "sqlite3"
|
||||
databaseOpenStringKey := "DATABASE_URL"
|
||||
databaseOpenStringVal := "db.db"
|
||||
|
||||
os.Setenv(databaseUrlEnvVariableKey, databaseUrlEnvVariableVal)
|
||||
os.Setenv(databaseOpenStringKey, databaseOpenStringVal)
|
||||
|
||||
dbconf, err := NewDBConf("../../db-sample", "environment_variable_config", "")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
got := reflect.TypeOf(dbconf.Driver.Dialect)
|
||||
want := reflect.TypeOf(&Sqlite3Dialect{})
|
||||
|
||||
if got != want {
|
||||
t.Errorf("Not able to read the driver type from environment variable."+
|
||||
"got %v want %v", got, want)
|
||||
}
|
||||
|
||||
gotOpenString := dbconf.Driver.OpenStr
|
||||
wantOpenString := databaseOpenStringVal
|
||||
|
||||
if gotOpenString != wantOpenString {
|
||||
t.Errorf("Not able to read the open string from the environment."+
|
||||
"got %v want %v", gotOpenString, wantOpenString)
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user