fix creating abs path for urls
This commit is contained in:
		
							parent
							
								
									2224f3a6c1
								
							
						
					
					
						commit
						6b5b88c2bc
					
				|  | @ -168,7 +168,7 @@ func cacheFlagsValid() error { | ||||||
| 
 | 
 | ||||||
| // resolveDockerfilePath resolves the Dockerfile path to an absolute path
 | // resolveDockerfilePath resolves the Dockerfile path to an absolute path
 | ||||||
| func resolveDockerfilePath() error { | func resolveDockerfilePath() error { | ||||||
| 	if match, _ := regexp.MatchString("^https?://", opts.DockerfilePath); match { | 	if isUrl(opts.DockerfilePath) { | ||||||
| 		return nil | 		return nil | ||||||
| 	} | 	} | ||||||
| 	if util.FilepathExists(opts.DockerfilePath) { | 	if util.FilepathExists(opts.DockerfilePath) { | ||||||
|  | @ -241,13 +241,8 @@ func resolveRelativePaths() error { | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	for _, p := range optsPaths { | 	for _, p := range optsPaths { | ||||||
| 		// Skip empty path
 | 		if path := *p; skipPath(path) { | ||||||
| 		if *p == "" { | 			logrus.Debugf("Skip resolving path %s", path) | ||||||
| 			continue |  | ||||||
| 		} |  | ||||||
| 		// Skip path that is already absolute
 |  | ||||||
| 		if filepath.IsAbs(*p) { |  | ||||||
| 			logrus.Debugf("Path %s is absolute, skipping", *p) |  | ||||||
| 			continue | 			continue | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
|  | @ -266,3 +261,14 @@ func exit(err error) { | ||||||
| 	fmt.Println(err) | 	fmt.Println(err) | ||||||
| 	os.Exit(1) | 	os.Exit(1) | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | func isUrl(path string) bool { | ||||||
|  | 	if match, _ := regexp.MatchString("^https?://", path); match { | ||||||
|  | 		return true | ||||||
|  | 	} | ||||||
|  | 	return false | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func skipPath(path string) bool { | ||||||
|  | 	return path == "" || isUrl(path) || filepath.IsAbs(path) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -0,0 +1,99 @@ | ||||||
|  | /* | ||||||
|  | Copyright 2018 Google LLC | ||||||
|  | 
 | ||||||
|  | Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  | you may not use this file except in compliance with the License. | ||||||
|  | You may obtain a copy of the License at | ||||||
|  | 
 | ||||||
|  |     http://www.apache.org/licenses/LICENSE-2.0
 | ||||||
|  | 
 | ||||||
|  | Unless required by applicable law or agreed to in writing, software | ||||||
|  | distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  | See the License for the specific language governing permissions and | ||||||
|  | limitations under the License. | ||||||
|  | */ | ||||||
|  | 
 | ||||||
|  | package cmd | ||||||
|  | 
 | ||||||
|  | import ( | ||||||
|  | 	"testing" | ||||||
|  | 
 | ||||||
|  | 	"github.com/GoogleContainerTools/kaniko/testutil" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | func TestSkipPath(t *testing.T) { | ||||||
|  | 	tests := []struct { | ||||||
|  | 		description string | ||||||
|  | 		path        string | ||||||
|  | 		expected    bool | ||||||
|  | 	}{ | ||||||
|  | 		{ | ||||||
|  | 			description: "path is a http url", | ||||||
|  | 			path:        "http://test", | ||||||
|  | 			expected:    true, | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			description: "path is a https url", | ||||||
|  | 			path:        "https://test", | ||||||
|  | 			expected:    true, | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			description: "path is a empty", | ||||||
|  | 			path:        "", | ||||||
|  | 			expected:    true, | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			description: "path is already abs", | ||||||
|  | 			path:        "/tmp/test", | ||||||
|  | 			expected:    true, | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			description: "path is relative", | ||||||
|  | 			path:        ".././test", | ||||||
|  | 		}, | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	for _, tt := range tests { | ||||||
|  | 		t.Run(tt.description, func(t *testing.T) { | ||||||
|  | 			testutil.CheckDeepEqual(t, tt.expected, skipPath(tt.path)) | ||||||
|  | 		}) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func TestIsUrl(t *testing.T) { | ||||||
|  | 	tests := []struct { | ||||||
|  | 		description string | ||||||
|  | 		path        string | ||||||
|  | 		expected    bool | ||||||
|  | 	}{ | ||||||
|  | 		{ | ||||||
|  | 			description: "path is a http url", | ||||||
|  | 			path:        "http://test", | ||||||
|  | 			expected:    true, | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			description: "path is a https url", | ||||||
|  | 			path:        "https://test", | ||||||
|  | 			expected:    true, | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			description: "path is a empty", | ||||||
|  | 			path:        "", | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			description: "path is already abs", | ||||||
|  | 			path:        "/tmp/test", | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			description: "path is relative", | ||||||
|  | 			path:        ".././test", | ||||||
|  | 		}, | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	for _, tt := range tests { | ||||||
|  | 		t.Run(tt.description, func(t *testing.T) { | ||||||
|  | 			testutil.CheckDeepEqual(t, tt.expected, isUrl(tt.path)) | ||||||
|  | 		}) | ||||||
|  | 	} | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue