You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2019/12/18 10:30:06 UTC
[camel-k] 06/10: Added viper load from env vars and file tests.
This is an automated email from the ASF dual-hosted git repository.
lburgazzoli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git
commit da3def297e65f4cb28fb62dd849c1a17f432dbeb
Author: Andrea Tarocchi <an...@gmail.com>
AuthorDate: Mon Dec 16 01:35:17 2019 +0100
Added viper load from env vars and file tests.
---
pkg/cmd/root_test.go | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 74 insertions(+)
diff --git a/pkg/cmd/root_test.go b/pkg/cmd/root_test.go
index 7505ffb..0bbad46 100644
--- a/pkg/cmd/root_test.go
+++ b/pkg/cmd/root_test.go
@@ -18,9 +18,11 @@ limitations under the License.
package cmd
import (
+ "bytes"
"context"
"github.com/apache/camel-k/pkg/util/test"
"github.com/spf13/cobra"
+ "github.com/spf13/viper"
"os"
"testing"
)
@@ -81,3 +83,75 @@ func TestLoadFromEnvVar(t *testing.T) {
t.Fatalf("EnvVars expected to be: \n %v\nGot:\n %v\n", "[VAR1=value,\"othervalue\" VAR=value2]", runCmdOptions.EnvVars)
}
}
+
+func TestLoadFromFile(t *testing.T) {
+ //shows how to include a "," character inside a property value see VAR1 value
+ var propertiesFile = []byte(`kamel.run.envs: "VAR1=value,""othervalue""",VAR2=value2`)
+ viper.SetConfigType("properties")
+ viper.ReadConfig(bytes.NewReader(propertiesFile))
+ options, rootCmd := kamelTestPreAddCommandInit()
+
+ runCmdOptions := addTestRunCmd(options, rootCmd)
+
+ rootCmd = kamelTestPostAddCommandInit(rootCmd)
+
+ _, err := test.ExecuteCommand(rootCmd, "run", "route.java")
+ if err != nil {
+ t.Fatalf("Unexpected error: %v", err)
+ }
+
+ if len(runCmdOptions.EnvVars) != 2 {
+ t.Fatalf("Properties expected to contain: \n %v elements\nGot:\n %v elemtns\n", 2, len(runCmdOptions.EnvVars))
+ }
+ if runCmdOptions.EnvVars[0] != "VAR1=value,\"othervalue\"" || runCmdOptions.EnvVars[1] != "VAR2=value2" {
+ t.Fatalf("EnvVars expected to be: \n %v\nGot:\n %v\n", "[VAR1=value,\"othervalue\" VAR=value2]", runCmdOptions.EnvVars)
+ }
+}
+
+func TestPrecedenceEnvVarOverFile(t *testing.T) {
+ os.Setenv("KAMEL_RUN_ENVS", "VAR1=envVar")
+ var propertiesFile = []byte(`kamel.run.envs: VAR2=file`)
+ viper.SetConfigType("properties")
+ viper.ReadConfig(bytes.NewReader(propertiesFile))
+ options, rootCmd := kamelTestPreAddCommandInit()
+
+ runCmdOptions := addTestRunCmd(options, rootCmd)
+
+ rootCmd = kamelTestPostAddCommandInit(rootCmd)
+
+ _, err := test.ExecuteCommand(rootCmd, "run", "route.java")
+ if err != nil {
+ t.Fatalf("Unexpected error: %v", err)
+ }
+
+ if len(runCmdOptions.EnvVars) != 1 {
+ t.Fatalf("Properties expected to contain: \n %v elements\nGot:\n %v elements\n", 1, len(runCmdOptions.EnvVars))
+ }
+ if runCmdOptions.EnvVars[0] != "VAR1=envVar" {
+ t.Fatalf("EnvVars expected to be: \n %v\nGot:\n %v\n", "VAR1=envVar", runCmdOptions.EnvVars)
+ }
+}
+
+func TestPrecedenceCommandLineOverEverythingElse(t *testing.T) {
+ os.Setenv("KAMEL_RUN_ENVS", "VAR1=envVar")
+ var propertiesFile = []byte(`kamel.run.envs: VAR2=file`)
+ viper.SetConfigType("properties")
+ viper.ReadConfig(bytes.NewReader(propertiesFile))
+ options, rootCmd := kamelTestPreAddCommandInit()
+
+ runCmdOptions := addTestRunCmd(options, rootCmd)
+
+ rootCmd = kamelTestPostAddCommandInit(rootCmd)
+
+ _, err := test.ExecuteCommand(rootCmd, "run", "route.java", "--env", "VAR3=commandLine")
+ if err != nil {
+ t.Fatalf("Unexpected error: %v", err)
+ }
+
+ if len(runCmdOptions.EnvVars) != 1 {
+ t.Fatalf("Properties expected to contain: \n %v elements\nGot:\n %v elements\n", 1, len(runCmdOptions.EnvVars))
+ }
+ if runCmdOptions.EnvVars[0] != "VAR3=commandLine" {
+ t.Fatalf("EnvVars expected to be: \n %v\nGot:\n %v\n", "VAR3=commandLine", runCmdOptions.EnvVars)
+ }
+}