From 2ee08591b07c18d93367aba202a54f5d03ce11b0 Mon Sep 17 00:00:00 2001 From: Matt Liggett Date: Thu, 29 Jun 2017 13:59:29 -0700 Subject: [PATCH 1/2] Return a slightly more verbose error when "go get" fails. --- hack/e2e.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/hack/e2e.go b/hack/e2e.go index 889754a6681..bc58a0ad8cf 100644 --- a/hack/e2e.go +++ b/hack/e2e.go @@ -144,8 +144,9 @@ func (t tester) getKubetest(get bool, old time.Duration) (string, error) { return "", fmt.Errorf("Cannot install kubetest until $GOPATH is set") } log.Print("Updating kubetest binary...") - if err = t.wait("go", "get", "-u", "k8s.io/test-infra/kubetest"); err != nil { - return "", err // Could not upgrade + cmd := []string{"go", "get", "-u", "k8s.io/test-infra/kubetest"} + if err = t.wait(cmd[0], cmd[1:]...); err != nil { + return "", fmt.Errorf("%s: %v", strings.Join(cmd, " "), err) // Could not upgrade } if p, err = t.lookKubetest(); err != nil { return "", err // Cannot find kubetest From 421166db0faf8ffa32a7aae45e55cc9be6e18372 Mon Sep 17 00:00:00 2001 From: Matt Liggett Date: Fri, 30 Jun 2017 13:40:52 -0700 Subject: [PATCH 2/2] Fix e2e_test.go --- hack/e2e_test.go | 48 ++++++++++++++++++++++++++++++------------------ 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/hack/e2e_test.go b/hack/e2e_test.go index b7cfce552c4..77aca4ed52f 100644 --- a/hack/e2e_test.go +++ b/hack/e2e_test.go @@ -190,10 +190,12 @@ func TestGetKubetest(t *testing.T) { p := "PATH" pk := filepath.Join(p, "kubetest") eu := errors.New("upgrade failed") + euVerbose := fmt.Errorf("go get -u k8s.io/test-infra/kubetest: %v", eu) et := errors.New("touch failed") cases := []struct { - get bool - old time.Duration + name string + get bool + old time.Duration stat string // stat succeeds on this file path bool // file exists on path @@ -205,7 +207,7 @@ func TestGetKubetest(t *testing.T) { returnPath string returnError error }{ - { // 0: Pass when on GOPATH/bin + {name: "0: Pass when on GOPATH/bin", get: false, old: 0, @@ -219,7 +221,7 @@ func TestGetKubetest(t *testing.T) { returnPath: gpk, returnError: nil, }, - { // 1: Pass when on PATH + {name: "1: Pass when on PATH", get: false, old: 0, @@ -233,7 +235,7 @@ func TestGetKubetest(t *testing.T) { returnPath: pk, returnError: nil, }, - { // 2: Don't upgrade if on PATH and GOPATH is "" + {name: "2: Don't upgrade if on PATH and GOPATH is ''", get: true, old: 0, @@ -247,7 +249,7 @@ func TestGetKubetest(t *testing.T) { returnPath: pk, returnError: nil, }, - { // 3: Don't upgrade on PATH when young. + {name: "3: Don't upgrade on PATH when young.", get: true, old: time.Hour, @@ -261,7 +263,7 @@ func TestGetKubetest(t *testing.T) { returnPath: pk, returnError: nil, }, - { // 4: Upgrade if old but GOPATH is set. + {name: "4: Upgrade if old but GOPATH is set.", get: true, old: 0, @@ -275,7 +277,7 @@ func TestGetKubetest(t *testing.T) { returnPath: pk, returnError: nil, }, - { // 5: Fail if upgrade fails + {name: "5: Fail if upgrade fails", get: true, old: 0, @@ -287,9 +289,9 @@ func TestGetKubetest(t *testing.T) { goPath: gpk, returnPath: "", - returnError: eu, + returnError: euVerbose, }, - { // 6: Fail if touch fails + {name: "6: Fail if touch fails", get: true, old: 0, @@ -309,21 +311,21 @@ func TestGetKubetest(t *testing.T) { didUp := false didTouch := false l := tester{ - func(p string) (os.FileInfo, error) { + stat: func(p string) (os.FileInfo, error) { // stat if p != c.stat { return nil, fmt.Errorf("Failed to find %s", p) } return FileInfo{time.Now().Add(c.age * -1)}, nil }, - func(name string) (string, error) { + lookPath: func(name string) (string, error) { if c.path { return filepath.Join(p, name), nil } return "", fmt.Errorf("Not on path: %s", name) }, - c.goPath, - func(cmd string, args ...string) error { + goPath: c.goPath, + wait: func(cmd string, args ...string) error { if cmd == "go" { if c.upgraded { didUp = true @@ -338,14 +340,24 @@ func TestGetKubetest(t *testing.T) { return et }, } - if p, e := l.getKubetest(c.get, c.old); p != c.returnPath || e != c.returnError { - t.Errorf("%d: c=%v p=%v e=%v", i, c, p, e) + p, e := l.getKubetest(c.get, c.old) + if p != c.returnPath { + t.Errorf("%d: test=%q returnPath %q != %q", i, c.name, p, c.returnPath) + } + if e == nil || c.returnError == nil { + if e != c.returnError { + t.Errorf("%d: test=%q returnError %q != %q", i, c.name, e, c.returnError) + } + } else { + if e.Error() != c.returnError.Error() { + t.Errorf("%d: test=%q returnError %q != %q", i, c.name, e, c.returnError) + } } if didUp != c.upgraded { - t.Errorf("%d: bad upgrade state of %v", i, didUp) + t.Errorf("%d: test=%q bad upgrade state of %v", i, c.name, didUp) } if didTouch != c.touched { - t.Errorf("%d: bad touch state of %v", i, didTouch) + t.Errorf("%d: test=%q bad touch state of %v", i, c.name, didTouch) } } }