ref(helm): refactor helm unit tests

... so we don't rely on external services
in unit tests :)
pull/720/head
Michelle Noorali 9 years ago
parent 4b5eef90a1
commit 1d4d5ec872

@ -1,12 +1,21 @@
package main package main
import ( import (
"fmt"
"io/ioutil" "io/ioutil"
"net/http"
"net/http/httptest"
"os" "os"
"testing" "testing"
) )
func TestEnsureHome(t *testing.T) { 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() home := createTmpHome()
helmHome = home helmHome = home
if err := ensureHome(); err != nil { if err := ensureHome(); err != nil {

@ -58,6 +58,7 @@ func runRepoAdd(cmd *cobra.Command, args []string) error {
if err := addRepository(name, url); err != nil { if err := addRepository(name, url); err != nil {
return err return err
} }
fmt.Println(name + " has been added to your repositories") fmt.Println(name + " has been added to your repositories")
return nil return nil
} }
@ -110,8 +111,8 @@ func index(dir, url string) error {
} }
func addRepository(name, url string) error { func addRepository(name, url string) error {
if err := repo.DownloadIndexFile(name, url, cacheDirectory(name, "-index.yaml")); err != nil { 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") return errors.New("Looks like " + url + " is not a valid chart repository or cannot be reached: " + err.Error())
} }
return insertRepoLine(name, url) return insertRepoLine(name, url)

@ -1,6 +1,12 @@
package main package main
import ( import (
"fmt"
"io/ioutil"
"net/http"
"net/http/httptest"
"os"
"path/filepath"
"testing" "testing"
"github.com/kubernetes/helm/pkg/repo" "github.com/kubernetes/helm/pkg/repo"
@ -12,13 +18,21 @@ var (
) )
func TestRepoAdd(t *testing.T) { func TestRepoAdd(t *testing.T) {
home := createTmpHome() ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
helmHome = home w.Header().Set("Content-Type", "text/plain")
if err := ensureHome(); err != nil { fmt.Fprintln(w, "OK")
t.Errorf("%s", err) }))
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) t.Errorf("%s", err)
} }
@ -31,7 +45,7 @@ func TestRepoAdd(t *testing.T) {
t.Errorf("%s was not successfully inserted into %s", testName, repositoriesFile()) 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") t.Errorf("Duplicate repository name was added")
} }

@ -28,7 +28,7 @@ type ChartRef struct {
} }
// DownloadIndexFile uses // DownloadIndexFile uses
func DownloadIndexFile(repoName, url, indexFileName string) error { func DownloadIndexFile(repoName, url, indexFilePath string) error {
var indexURL string var indexURL string
indexURL = strings.TrimSuffix(url, "/") + "/index.yaml" indexURL = strings.TrimSuffix(url, "/") + "/index.yaml"
@ -49,11 +49,7 @@ func DownloadIndexFile(repoName, url, indexFileName string) error {
return err return err
} }
if err := ioutil.WriteFile(indexFileName, b, 0644); err != nil { return ioutil.WriteFile(indexFilePath, b, 0644)
return err
}
return nil
} }
// UnmarshalYAML unmarshals the index file // UnmarshalYAML unmarshals the index file

Loading…
Cancel
Save