diff --git a/cmd/helm/init_test.go b/cmd/helm/init_test.go index 19414478f..fba99e2c6 100644 --- a/cmd/helm/init_test.go +++ b/cmd/helm/init_test.go @@ -1,12 +1,21 @@ package main import ( + "fmt" "io/ioutil" + "net/http" + "net/http/httptest" "os" "testing" ) func TestEnsureHome(t *testing.T) { + ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "text/plain") + fmt.Fprintln(w, "OK") + })) + defaultRepositoryURL = ts.URL + home := createTmpHome() helmHome = home if err := ensureHome(); err != nil { diff --git a/cmd/helm/repo.go b/cmd/helm/repo.go index eee3b9a71..cce323e1c 100644 --- a/cmd/helm/repo.go +++ b/cmd/helm/repo.go @@ -58,6 +58,7 @@ func runRepoAdd(cmd *cobra.Command, args []string) error { if err := addRepository(name, url); err != nil { return err } + fmt.Println(name + " has been added to your repositories") return nil } @@ -110,8 +111,8 @@ func index(dir, url string) error { } func addRepository(name, url string) error { - if err := repo.DownloadIndexFile(name, url, cacheDirectory(name, "-index.yaml")); err != nil { - return errors.New("Looks like " + url + " is not a valid chart repository or cannot be reached\n") + if err := repo.DownloadIndexFile(name, url, cacheDirectory(name+"-index.yaml")); err != nil { + return errors.New("Looks like " + url + " is not a valid chart repository or cannot be reached: " + err.Error()) } return insertRepoLine(name, url) diff --git a/cmd/helm/repo_test.go b/cmd/helm/repo_test.go index 972051108..b65013e10 100644 --- a/cmd/helm/repo_test.go +++ b/cmd/helm/repo_test.go @@ -1,6 +1,12 @@ package main import ( + "fmt" + "io/ioutil" + "net/http" + "net/http/httptest" + "os" + "path/filepath" "testing" "github.com/kubernetes/helm/pkg/repo" @@ -12,13 +18,21 @@ var ( ) func TestRepoAdd(t *testing.T) { - home := createTmpHome() - helmHome = home - if err := ensureHome(); err != nil { - t.Errorf("%s", err) + ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "text/plain") + fmt.Fprintln(w, "OK") + })) + + helmHome, _ = ioutil.TempDir("", "helm_home") + defer os.Remove(helmHome) + os.Mkdir(filepath.Join(helmHome, repositoryDir), 0755) + os.Mkdir(cacheDirectory(), 0755) + + if err := ioutil.WriteFile(repositoriesFile(), []byte("example-repo: http://exampleurl.com"), 0666); err != nil { + t.Errorf("%#v", err) } - if err := insertRepoLine(testName, testURL); err != nil { + if err := addRepository(testName, ts.URL); err != nil { t.Errorf("%s", err) } @@ -31,7 +45,7 @@ func TestRepoAdd(t *testing.T) { t.Errorf("%s was not successfully inserted into %s", testName, repositoriesFile()) } - if err := insertRepoLine(testName, testURL); err == nil { + if err := insertRepoLine(testName, ts.URL); err == nil { t.Errorf("Duplicate repository name was added") } diff --git a/pkg/repo/index.go b/pkg/repo/index.go index f61ba57c6..99b764e34 100644 --- a/pkg/repo/index.go +++ b/pkg/repo/index.go @@ -28,7 +28,7 @@ type ChartRef struct { } // DownloadIndexFile uses -func DownloadIndexFile(repoName, url, indexFileName string) error { +func DownloadIndexFile(repoName, url, indexFilePath string) error { var indexURL string indexURL = strings.TrimSuffix(url, "/") + "/index.yaml" @@ -49,11 +49,7 @@ func DownloadIndexFile(repoName, url, indexFileName string) error { return err } - if err := ioutil.WriteFile(indexFileName, b, 0644); err != nil { - return err - } - - return nil + return ioutil.WriteFile(indexFilePath, b, 0644) } // UnmarshalYAML unmarshals the index file