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