|
|
|
|
@ -3,6 +3,7 @@ package setting |
|
|
|
|
import ( |
|
|
|
|
"os" |
|
|
|
|
"path/filepath" |
|
|
|
|
"runtime" |
|
|
|
|
"testing" |
|
|
|
|
|
|
|
|
|
. "github.com/smartystreets/goconvey/convey" |
|
|
|
|
@ -52,13 +53,22 @@ func TestLoadingSettings(t *testing.T) { |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
Convey("Should be able to override via command line", func() { |
|
|
|
|
NewConfigContext(&CommandLineArgs{ |
|
|
|
|
HomePath: "../../", |
|
|
|
|
Args: []string{"cfg:paths.data=/tmp/data", "cfg:paths.logs=/tmp/logs"}, |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
So(DataPath, ShouldEqual, "/tmp/data") |
|
|
|
|
So(LogsPath, ShouldEqual, "/tmp/logs") |
|
|
|
|
if runtime.GOOS == "windows" { |
|
|
|
|
NewConfigContext(&CommandLineArgs{ |
|
|
|
|
HomePath: "../../", |
|
|
|
|
Args: []string{`cfg:paths.data=c:\tmp\data`, `cfg:paths.logs=c:\tmp\logs`}, |
|
|
|
|
}) |
|
|
|
|
So(DataPath, ShouldEqual, `c:\tmp\data`) |
|
|
|
|
So(LogsPath, ShouldEqual, `c:\tmp\logs`) |
|
|
|
|
} else { |
|
|
|
|
NewConfigContext(&CommandLineArgs{ |
|
|
|
|
HomePath: "../../", |
|
|
|
|
Args: []string{"cfg:paths.data=/tmp/data", "cfg:paths.logs=/tmp/logs"}, |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
So(DataPath, ShouldEqual, "/tmp/data") |
|
|
|
|
So(LogsPath, ShouldEqual, "/tmp/logs") |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
Convey("Should be able to override defaults via command line", func() { |
|
|
|
|
@ -74,33 +84,63 @@ func TestLoadingSettings(t *testing.T) { |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
Convey("Defaults can be overridden in specified config file", func() { |
|
|
|
|
NewConfigContext(&CommandLineArgs{ |
|
|
|
|
HomePath: "../../", |
|
|
|
|
Config: filepath.Join(HomePath, "tests/config-files/override.ini"), |
|
|
|
|
Args: []string{"cfg:default.paths.data=/tmp/data"}, |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
So(DataPath, ShouldEqual, "/tmp/override") |
|
|
|
|
if runtime.GOOS == "windows" { |
|
|
|
|
NewConfigContext(&CommandLineArgs{ |
|
|
|
|
HomePath: "../../", |
|
|
|
|
Config: filepath.Join(HomePath, "tests/config-files/override_windows.ini"), |
|
|
|
|
Args: []string{`cfg:default.paths.data=c:\tmp\data`}, |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
So(DataPath, ShouldEqual, `c:\tmp\override`) |
|
|
|
|
} else { |
|
|
|
|
NewConfigContext(&CommandLineArgs{ |
|
|
|
|
HomePath: "../../", |
|
|
|
|
Config: filepath.Join(HomePath, "tests/config-files/override.ini"), |
|
|
|
|
Args: []string{"cfg:default.paths.data=/tmp/data"}, |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
So(DataPath, ShouldEqual, "/tmp/override") |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
Convey("Command line overrides specified config file", func() { |
|
|
|
|
NewConfigContext(&CommandLineArgs{ |
|
|
|
|
HomePath: "../../", |
|
|
|
|
Config: filepath.Join(HomePath, "tests/config-files/override.ini"), |
|
|
|
|
Args: []string{"cfg:paths.data=/tmp/data"}, |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
So(DataPath, ShouldEqual, "/tmp/data") |
|
|
|
|
if runtime.GOOS == "windows" { |
|
|
|
|
NewConfigContext(&CommandLineArgs{ |
|
|
|
|
HomePath: "../../", |
|
|
|
|
Config: filepath.Join(HomePath, "tests/config-files/override_windows.ini"), |
|
|
|
|
Args: []string{`cfg:paths.data=c:\tmp\data`}, |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
So(DataPath, ShouldEqual, `c:\tmp\data`) |
|
|
|
|
} else { |
|
|
|
|
NewConfigContext(&CommandLineArgs{ |
|
|
|
|
HomePath: "../../", |
|
|
|
|
Config: filepath.Join(HomePath, "tests/config-files/override.ini"), |
|
|
|
|
Args: []string{"cfg:paths.data=/tmp/data"}, |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
So(DataPath, ShouldEqual, "/tmp/data") |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
Convey("Can use environment variables in config values", func() { |
|
|
|
|
os.Setenv("GF_DATA_PATH", "/tmp/env_override") |
|
|
|
|
NewConfigContext(&CommandLineArgs{ |
|
|
|
|
HomePath: "../../", |
|
|
|
|
Args: []string{"cfg:paths.data=${GF_DATA_PATH}"}, |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
So(DataPath, ShouldEqual, "/tmp/env_override") |
|
|
|
|
if runtime.GOOS == "windows" { |
|
|
|
|
os.Setenv("GF_DATA_PATH", `c:\tmp\env_override`) |
|
|
|
|
NewConfigContext(&CommandLineArgs{ |
|
|
|
|
HomePath: "../../", |
|
|
|
|
Args: []string{"cfg:paths.data=${GF_DATA_PATH}"}, |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
So(DataPath, ShouldEqual, `c:\tmp\env_override`) |
|
|
|
|
} else { |
|
|
|
|
os.Setenv("GF_DATA_PATH", "/tmp/env_override") |
|
|
|
|
NewConfigContext(&CommandLineArgs{ |
|
|
|
|
HomePath: "../../", |
|
|
|
|
Args: []string{"cfg:paths.data=${GF_DATA_PATH}"}, |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
So(DataPath, ShouldEqual, "/tmp/env_override") |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
Convey("instance_name default to hostname even if hostname env is empty", func() { |
|
|
|
|
|