You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by nf...@apache.org on 2021/01/15 11:30:51 UTC

[camel-k] branch master updated: fix(cli): check run sources exists

This is an automated email from the ASF dual-hosted git repository.

nferraro pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git


The following commit(s) were added to refs/heads/master by this push:
     new aaeb457  fix(cli): check run sources exists
aaeb457 is described below

commit aaeb4573fb62881fae1f6fa0b8f20695237414d4
Author: Pasquale Congiusti <pa...@gmail.com>
AuthorDate: Fri Jan 15 10:33:34 2021 +0100

    fix(cli): check run sources exists
    
    * Changed the name of run.isLocal func to run.isLocalAndExists as the function does both things
    * Added a default switch case to report either the file doesn't exist or the URI scheme cannot be parsed
    * Added some unit test to verify error messages expected
    
    Fixes #1911
---
 pkg/cmd/run.go          |  4 ++--
 pkg/cmd/run_test.go     | 17 +++++++++++++++++
 pkg/cmd/util_content.go |  2 +-
 pkg/cmd/util_sources.go |  4 +++-
 4 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/pkg/cmd/run.go b/pkg/cmd/run.go
index 5904272..695f01f 100644
--- a/pkg/cmd/run.go
+++ b/pkg/cmd/run.go
@@ -380,7 +380,7 @@ func (o *runCmdOptions) syncIntegration(cmd *cobra.Command, c client.Client, sou
 	files = append(files, o.OpenAPIs...)
 
 	for _, s := range files {
-		if isLocal(s) {
+		if isLocalAndFileExists(s) {
 			changes, err := sync.File(o.Context, s)
 			if err != nil {
 				return err
@@ -645,7 +645,7 @@ func (*runCmdOptions) configureTraits(integration *v1.Integration, options []str
 	return nil
 }
 
-func isLocal(fileName string) bool {
+func isLocalAndFileExists(fileName string) bool {
 	info, err := os.Stat(fileName)
 	if os.IsNotExist(err) {
 		return false
diff --git a/pkg/cmd/run_test.go b/pkg/cmd/run_test.go
index 9db4193..ce9527f 100644
--- a/pkg/cmd/run_test.go
+++ b/pkg/cmd/run_test.go
@@ -416,6 +416,23 @@ func TestRunVolumeFlagWrongPVCFormat(t *testing.T) {
 	assert.NotNil(t, err)
 }
 
+func TestRunValidateArgs(t *testing.T) {
+	runCmdOptions, rootCmd, _ := initializeRunCmdOptions(t)
+	args := []string{}
+	err := runCmdOptions.validateArgs(rootCmd, args)
+	assert.NotNil(t, err)
+	assert.Equal(t, "run expects at least 1 argument, received 0", err.Error())
+
+	args = []string{"run_test.go"}
+	err = runCmdOptions.validateArgs(rootCmd, args)
+	assert.Nil(t, err)
+
+	args = []string{"missing_file"}
+	err = runCmdOptions.validateArgs(rootCmd, args)
+	assert.NotNil(t, err)
+	assert.Equal(t, "One of the provided sources is not reachable: Missing file or unsupported scheme in missing_file", err.Error())
+}
+
 //
 // This test does work when running as single test but fails
 // otherwise as we are using a global viper instance
diff --git a/pkg/cmd/util_content.go b/pkg/cmd/util_content.go
index 75d9c08..c210870 100644
--- a/pkg/cmd/util_content.go
+++ b/pkg/cmd/util_content.go
@@ -30,7 +30,7 @@ func loadContent(source string, compress bool, compressBinary bool) (string, boo
 	var content []byte
 	var err error
 
-	if isLocal(source) {
+	if isLocalAndFileExists(source) {
 		content, err = ioutil.ReadFile(source)
 	} else {
 		u, err := url.Parse(source)
diff --git a/pkg/cmd/util_sources.go b/pkg/cmd/util_sources.go
index 50a0838..f539705 100644
--- a/pkg/cmd/util_sources.go
+++ b/pkg/cmd/util_sources.go
@@ -65,7 +65,7 @@ func ResolveSources(ctx context.Context, locations []string, compress bool) ([]S
 	sources := make([]Source, 0, len(locations))
 
 	for _, location := range locations {
-		if isLocal(location) {
+		if isLocalAndFileExists(location) {
 			answer, err := ResolveLocalSource(location, compress)
 			if err != nil {
 				return sources, err
@@ -176,6 +176,8 @@ func ResolveSources(ctx context.Context, locations []string, compress bool) ([]S
 					return sources, err
 				}
 				sources = append(sources, answer)
+			default:
+				return sources, fmt.Errorf("Missing file or unsupported scheme in %s", location)
 			}
 		}
 	}