diff --git a/pkg/repo/index.go b/pkg/repo/index.go index a8589aa19..0c8a9436f 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 e5f5256a2..33203c495 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]) + } +}