From: Shenghou Ma Date: Sat, 2 May 2015 02:23:04 +0000 (-0400) Subject: cmd/dist: add -k to "dist test" to keep going after error X-Git-Tag: go1.5beta1~553 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=ab4e7988bb30eaf43ef9c5b4dcedc30502a0b0e6;p=gostls13.git cmd/dist: add -k to "dist test" to keep going after error Fixes #10336. Change-Id: Idc3f60851aea590575dc293165d4d6f85ae001bc Reviewed-on: https://go-review.googlesource.com/9645 Reviewed-by: Brad Fitzpatrick --- diff --git a/src/cmd/dist/test.go b/src/cmd/dist/test.go index addf61dad9..1f26eef5ee 100644 --- a/src/cmd/dist/test.go +++ b/src/cmd/dist/test.go @@ -24,6 +24,7 @@ func cmdtest() { var t tester flag.BoolVar(&t.listMode, "list", false, "list available tests") flag.BoolVar(&t.noRebuild, "no-rebuild", false, "don't rebuild std and cmd packages") + flag.BoolVar(&t.keepGoing, "k", false, "keep going even when error occurred") flag.StringVar(&t.banner, "banner", "##### ", "banner prefix; blank means no section banners") flag.StringVar(&t.runRxStr, "run", os.Getenv("GOTESTONLY"), "run only those tests matching the regular expression; empty means to run all. "+ @@ -36,6 +37,7 @@ func cmdtest() { type tester struct { listMode bool noRebuild bool + keepGoing bool runRxStr string runRx *regexp.Regexp runRxWant bool @@ -163,6 +165,7 @@ func (t *tester) run() { os.Unsetenv("GOROOT_FINAL") var lastHeading string + ok := true for _, dt := range t.tests { if t.runRx != nil && (t.runRx.MatchString(dt.name) != t.runRxWant) { t.partial = true @@ -176,10 +179,18 @@ func (t *tester) run() { fmt.Printf("# go tool dist test -run=^%s$\n", dt.name) } if err := dt.fn(); err != nil { - log.Fatalf("Failed: %v", err) + ok = false + if t.keepGoing { + log.Printf("Failed: %v", err) + } else { + log.Fatalf("Failed: %v", err) + } } } - if t.partial { + if !ok { + fmt.Println("\nFAILED") + os.Exit(1) + } else if t.partial { fmt.Println("\nALL TESTS PASSED (some were excluded)") } else { fmt.Println("\nALL TESTS PASSED")