Return repo from get chart by reference

pull/439/head
jackgr 9 years ago
parent 03f859f367
commit 18068bdcf6

Binary file not shown.

@ -112,7 +112,7 @@ func TestGetChart(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
if reflect.DeepEqual(wantFile, haveFile) { if !reflect.DeepEqual(wantFile, haveFile) {
t.Fatalf("retrieved invalid chart\nwant:%#v\nhave:\n%#v\n", wantFile, haveFile) t.Fatalf("retrieved invalid chart\nwant:%#v\nhave:\n%#v\n", wantFile, haveFile)
} }
} }

@ -33,7 +33,7 @@ import (
type IRepoProvider interface { type IRepoProvider interface {
GetRepoByURL(URL string) (IChartRepo, error) GetRepoByURL(URL string) (IChartRepo, error)
GetRepoByName(repoName string) (IChartRepo, error) GetRepoByName(repoName string) (IChartRepo, error)
GetChartByReference(reference string) (*chart.Chart, error) GetChartByReference(reference string) (*chart.Chart, IChartRepo, error)
} }
type repoProvider struct { type repoProvider struct {
@ -157,25 +157,30 @@ func (rp *repoProvider) findRepoByURL(URL string) IChartRepo {
// GetChartByReference maps the supplied chart reference into a fully qualified // GetChartByReference maps the supplied chart reference into a fully qualified
// URL, uses the URL to find the repository it references, queries the repository // URL, uses the URL to find the repository it references, queries the repository
// for the chart by URL, and returns the result. // for the chart by URL, and returns the chart and the repository that backs it.
func (rp *repoProvider) GetChartByReference(reference string) (*chart.Chart, error) { func (rp *repoProvider) GetChartByReference(reference string) (*chart.Chart, IChartRepo, error) {
l, err := ParseGCSChartReference(reference) l, err := ParseGCSChartReference(reference)
if err != nil { if err != nil {
return nil, err return nil, nil, err
} }
URL, err := l.Long(true) URL, err := l.Long(true)
if err != nil { if err != nil {
return nil, fmt.Errorf("invalid reference %s: %s", reference, err) return nil, nil, fmt.Errorf("invalid reference %s: %s", reference, err)
} }
r, err := rp.GetRepoByURL(URL) r, err := rp.GetRepoByURL(URL)
if err != nil { if err != nil {
return nil, err return nil, nil, err
} }
name := fmt.Sprintf("%s-%s.tgz", l.Name, l.Version) name := fmt.Sprintf("%s-%s.tgz", l.Name, l.Version)
return r.GetChart(name) c, err := r.GetChart(name)
if err != nil {
return nil, nil, err
}
return c, r, nil
} }
// GCSRepoProvider is a factory for GCS IRepo instances. // GCSRepoProvider is a factory for GCS IRepo instances.

@ -99,14 +99,14 @@ func TestGetChartByReferenceWithValidReferences(t *testing.T) {
for _, vcr := range ValidChartReferences { for _, vcr := range ValidChartReferences {
t.Logf("getting chart by reference: %s", vcr) t.Logf("getting chart by reference: %s", vcr)
tc, err := rp.GetChartByReference(vcr) tc, _, err := rp.GetChartByReference(vcr)
if err != nil { if err != nil {
t.Error(err) t.Error(err)
continue continue
} }
haveFile := tc.Chartfile() haveFile := tc.Chartfile()
if reflect.DeepEqual(wantFile, haveFile) { if !reflect.DeepEqual(wantFile, haveFile) {
t.Fatalf("retrieved invalid chart\nwant:%#v\nhave:\n%#v\n", wantFile, haveFile) t.Fatalf("retrieved invalid chart\nwant:%#v\nhave:\n%#v\n", wantFile, haveFile)
} }
} }
@ -130,7 +130,7 @@ func getTestRepoProvider(t *testing.T) IRepoProvider {
func TestGetChartByReferenceWithInvalidReferences(t *testing.T) { func TestGetChartByReferenceWithInvalidReferences(t *testing.T) {
rp := NewRepoProvider(nil, nil, nil) rp := NewRepoProvider(nil, nil, nil)
for _, icr := range InvalidChartReferences { for _, icr := range InvalidChartReferences {
_, err := rp.GetChartByReference(icr) _, _, err := rp.GetChartByReference(icr)
if err == nil { if err == nil {
t.Fatalf("found chart using invalid reference: %s", icr) t.Fatalf("found chart using invalid reference: %s", icr)
} }

Loading…
Cancel
Save