Signed-off-by: Vaibhav Sharma <17532va@gmail.com>
pull/11701/head
Vaibhav Sharma 3 years ago
parent 75aa211a0a
commit c336914b4b

@ -660,10 +660,10 @@ func (m *Manager) UpdateRepositories(c *chart.Chart) error {
repos = append(repos, e)
}
}
if len(repos) > 0 {
if len(rf.Repositories) > 0 {
fmt.Fprintln(m.Out, "Hang tight while we grab the latest from your chart repositories...")
// This prints warnings straight to out.
if err := m.parallelRepoUpdate(repos); err != nil {
if err := m.parallelRepoUpdate(rf.Repositories); err != nil {
return err
}
fmt.Fprintln(m.Out, "Update Complete. ⎈Happy Helming!⎈")

@ -572,3 +572,68 @@ func TestKey(t *testing.T) {
}
}
}
// See issue https://github.com/helm/helm/issues/11509
func TestUpdateOnlyRequiredRepos(t *testing.T) {
// Set up a fake repo
srv, err := repotest.NewTempServerWithCleanupAndMultipleRepos(t, "testdata/*.tgz*", []string{"https://abc", "https://xyz"})
//srv, err := repotest.NewTempServerWithCleanup(t, "testdata/*.tgz*")
if err != nil {
t.Fatal(err)
}
defer srv.Stop()
if err := srv.LinkIndices(); err != nil {
t.Fatal(err)
}
dir := func(p ...string) string {
return filepath.Join(append([]string{srv.Root()}, p...)...)
}
// Save dep
d := &chart.Chart{
Metadata: &chart.Metadata{
Name: "dep-chart",
Version: "0.1.0",
APIVersion: "v1",
},
}
if err := chartutil.SaveDir(d, dir()); err != nil {
t.Fatal(err)
}
// Save a chart
c := &chart.Chart{
Metadata: &chart.Metadata{
Name: "with-dependency",
Version: "0.1.0",
APIVersion: "v2",
Dependencies: []*chart.Dependency{{
Name: d.Metadata.Name,
Version: ">=0.1.0",
Repository: "https://abc",
}},
},
}
if err := chartutil.SaveDir(c, dir()); err != nil {
t.Fatal(err)
}
// Set-up a manager
b := bytes.NewBuffer(nil)
g := getter.Providers{getter.Provider{
Schemes: []string{"http", "https"},
New: getter.NewHTTPGetter,
}}
m := &Manager{
ChartPath: dir(c.Metadata.Name),
Out: b,
Getters: g,
RepositoryConfig: dir("repositories.yaml"),
RepositoryCache: dir(),
}
err = m.Update()
if err != nil {
t.Fatal(err)
}
}

@ -55,6 +55,20 @@ func NewTempServerWithCleanup(t *testing.T, glob string) (*Server, error) {
return srv, err
}
// Setup mutliple fake repos
func NewTempServerWithCleanupAndMultipleRepos(t *testing.T, glob string, repoUrls []string) (*Server, error) {
srv, err := NewTempServer(glob)
srv.Stop()
// Add the testing repository as the only repo.
if err := setTestingRepositories(repoUrls, filepath.Join(srv.docroot, "repositories.yaml")); err != nil {
panic(err)
}
srv.CopyCharts()
srv.Start()
t.Cleanup(func() { os.RemoveAll(srv.docroot) })
return srv, err
}
// Set up a fake repo with basic auth enabled
func NewTempServerWithCleanupAndBasicAuth(t *testing.T, glob string) *Server {
srv, err := NewTempServerWithCleanup(t, glob)
@ -400,6 +414,7 @@ func (s *Server) Stop() {
// URL returns the URL of the server.
//
// Example:
//
// http://localhost:1776
func (s *Server) URL() string {
return s.srv.URL
@ -423,3 +438,15 @@ func setTestingRepository(url, fname string) error {
})
return r.WriteFile(fname, 0644)
}
// setTestingRepository sets up a testing repository.yaml with the given URLs.
func setTestingRepositories(urls []string, fname string) error {
r := repo.NewFile()
for _, url := range urls {
r.Add(&repo.Entry{
Name: "test",
URL: url,
})
}
return r.WriteFile(fname, 0644)
}

Loading…
Cancel
Save