diff --git a/soda/cmd/root.go b/soda/cmd/root.go index 0af3e289..57672f11 100644 --- a/soda/cmd/root.go +++ b/soda/cmd/root.go @@ -19,7 +19,10 @@ var RootCmd = &cobra.Command{ Short: "A tasty treat for all your database needs", PersistentPreRun: func(c *cobra.Command, args []string) { fmt.Printf("%s\n\n", Version) - env = defaults.String(os.Getenv("GO_ENV"), env) + // CLI flag has priority + if !c.PersistentFlags().Changed("env") { + env = defaults.String(os.Getenv("GO_ENV"), env) + } setConfigLocation() }, Run: func(cmd *cobra.Command, args []string) { diff --git a/soda/cmd/root_integration_test.go b/soda/cmd/root_integration_test.go new file mode 100644 index 00000000..3a6b40c2 --- /dev/null +++ b/soda/cmd/root_integration_test.go @@ -0,0 +1,38 @@ +package cmd + +import ( + "os" + "testing" + + "github.com/stretchr/testify/require" +) + +func Test_RootCmd_NoArg(t *testing.T) { + oldEnv := os.Getenv("GO_ENV") + defer os.Setenv("GO_ENV", oldEnv) + + // Fallback on default env + r := require.New(t) + c := RootCmd + c.SetArgs([]string{}) + err := c.Execute() + r.NoError(err) + r.Equal("development", env) + + // Override with GO_ENV + c.SetArgs([]string{}) + os.Setenv("GO_ENV", "test") + err = c.Execute() + r.NoError(err) + r.Equal("test", env) + + // CLI flag priority + c.SetArgs([]string{ + "--env", + "production", + }) + os.Setenv("GO_ENV", "test") + err = c.Execute() + r.NoError(err) + r.Equal("production", env) +}