diff --git a/pkg/repo/index.go b/pkg/repo/index.go index a8589aa1981380874d5125cf055e08744e2ec46c..0c8a9436fb7db4b1ca739bfa72f7835d26cd0304 100644 --- a/pkg/repo/index.go +++ b/pkg/repo/index.go @@ -96,7 +96,8 @@ func NewIndexFile() *IndexFile { func (i IndexFile) Add(md *chart.Metadata, filename, baseURL, digest string) { u := filename if baseURL != "" { - u = baseURL + "/" + filename + _, file := filepath.Split(filename) + u = strings.TrimSuffix(baseURL, "/") + "/" + file } cr := &ChartVersion{ URLs: []string{u}, diff --git a/pkg/repo/index_test.go b/pkg/repo/index_test.go index e5f5256a2ad86b004cec2b6291e8f12a66694a67..33203c495717bfe312fec9c6d183b3c6d18c21cb 100644 --- a/pkg/repo/index_test.go +++ b/pkg/repo/index_test.go @@ -270,3 +270,25 @@ func TestLoadUnversionedIndex(t *testing.T) { t.Fatalf("Expected 3 mysql versions, got %d", l) } } + +func TestIndexAdd(t *testing.T) { + + i := NewIndexFile() + i.Add(&chart.Metadata{Name: "clipper", Version: "0.1.0"}, "clipper-0.1.0.tgz", "http://example.com/charts", "sha256:1234567890") + + if i.Entries["clipper"][0].URLs[0] != "http://example.com/charts/clipper-0.1.0.tgz" { + t.Errorf("Expected http://example.com/charts/clipper-0.1.0.tgz, got %s", i.Entries["clipper"][0].URLs[0]) + } + + i.Add(&chart.Metadata{Name: "alpine", Version: "0.1.0"}, "/home/charts/alpine-0.1.0.tgz", "http://example.com/charts", "sha256:1234567890") + + if i.Entries["alpine"][0].URLs[0] != "http://example.com/charts/alpine-0.1.0.tgz" { + t.Errorf("Expected http://example.com/charts/alpine-0.1.0.tgz, got %s", i.Entries["alpine"][0].URLs[0]) + } + + i.Add(&chart.Metadata{Name: "deis", Version: "0.1.0"}, "/home/charts/deis-0.1.0.tgz", "http://example.com/charts/", "sha256:1234567890") + + if i.Entries["deis"][0].URLs[0] != "http://example.com/charts/deis-0.1.0.tgz" { + t.Errorf("Expected http://example.com/charts/deis-0.1.0.tgz, got %s", i.Entries["deis"][0].URLs[0]) + } +}