diff --git a/pkg/downloader/manager.go b/pkg/downloader/manager.go index 8d210ea70..b5d7e26b3 100644 --- a/pkg/downloader/manager.go +++ b/pkg/downloader/manager.go @@ -802,6 +802,7 @@ func normalizeURL(baseURL, urlOrPath string) (string, error) { return urlOrPath, errors.Wrap(err, "base URL failed to parse") } + u2.RawPath = path.Join(u2.RawPath, urlOrPath) u2.Path = path.Join(u2.Path, urlOrPath) return u2.String(), nil } diff --git a/pkg/downloader/manager_test.go b/pkg/downloader/manager_test.go index b2b32bf74..8b871e66e 100644 --- a/pkg/downloader/manager_test.go +++ b/pkg/downloader/manager_test.go @@ -55,6 +55,7 @@ func TestNormalizeURL(t *testing.T) { }{ {name: "basic URL", base: "https://example.com", path: "http://helm.sh/foo", expect: "http://helm.sh/foo"}, {name: "relative path", base: "https://helm.sh/charts", path: "foo", expect: "https://helm.sh/charts/foo"}, + {name: "Encoded path", base: "https://helm.sh/a%2Fb/charts", path: "foo", expect: "https://helm.sh/a%2Fb/charts/foo"}, } for _, tt := range tests {