diff --git a/cmd/helm/repo_add.go b/cmd/helm/repo_add.go index 3d36fd0ed..3588e1e41 100644 --- a/cmd/helm/repo_add.go +++ b/cmd/helm/repo_add.go @@ -129,7 +129,7 @@ func (o *repoAddOptions) run(out io.Writer) error { if err != nil { return err } - + r.CachePath = settings.RepositoryCache if _, err := r.DownloadIndexFile(); err != nil { return errors.Wrapf(err, "looks like %q is not a valid chart repository or cannot be reached", o.url) } diff --git a/cmd/helm/repo_update_test.go b/cmd/helm/repo_update_test.go index 6ddce0637..006fc5594 100644 --- a/cmd/helm/repo_update_test.go +++ b/cmd/helm/repo_update_test.go @@ -18,14 +18,15 @@ package main import ( "bytes" "fmt" - "io" - "strings" - "testing" - "helm.sh/helm/v3/internal/test/ensure" "helm.sh/helm/v3/pkg/getter" "helm.sh/helm/v3/pkg/repo" "helm.sh/helm/v3/pkg/repo/repotest" + "io" + "io/ioutil" + "path/filepath" + "strings" + "testing" ) func TestUpdateCmd(t *testing.T) { @@ -79,3 +80,34 @@ func TestUpdateCharts(t *testing.T) { t.Error("Update was not successful") } } + +func TestUpdateChartsCustomCache(t *testing.T) { + defer resetEnv()() + defer ensure.HelmHome(t)() + + ts, err := repotest.NewTempServer("testdata/testserver/*.*") + if err != nil { + t.Fatal(err) + } + defer ts.Stop() + + r, err := repo.NewChartRepository(&repo.Entry{ + Name: "charts", + URL: ts.URL(), + }, getter.All(settings)) + if err != nil { + t.Error(err) + } + + cachePath := ensure.TempDir(t) + cacheFile := filepath.Join(cachePath, "charts-index.yaml") + r.CachePath = cachePath + + b := bytes.NewBuffer(nil) + updateCharts([]*repo.ChartRepository{r}, b) + + _, err = ioutil.ReadFile(cacheFile) + if err != nil { + t.Error(err) + } +} \ No newline at end of file