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
|
open: customdriver open
|
||||||
import: github.com/custom/driver
|
import: github.com/custom/driver
|
||||||
dialect: mysql
|
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 {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
drv = os.ExpandEnv(drv)
|
||||||
|
|
||||||
open, err := f.Get(fmt.Sprintf("%s.open", env))
|
open, err := f.Get(fmt.Sprintf("%s.open", env))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
package goose
|
package goose
|
||||||
|
|
||||||
import (
|
import (
|
||||||
// "fmt"
|
"os"
|
||||||
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -35,3 +36,35 @@ func TestImportOverride(t *testing.T) {
|
|||||||
t.Errorf("bad custom import. got %v want %v", got, want)
|
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