Merge pull request #48292 from mml/fnord

Automatic merge from submit-queue (batch tested with PRs 48292, 48121)

Return a slightly more verbose error when "go get" fails.
pull/6/head
Kubernetes Submit Queue 2017-07-05 17:41:38 -07:00 committed by GitHub
commit c0c3fe011c
2 changed files with 33 additions and 20 deletions

View File

@ -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

View File

@ -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)
}
}
}