]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/dist: add -k to "dist test" to keep going after error
authorShenghou Ma <minux@golang.org>
Sat, 2 May 2015 02:23:04 +0000 (22:23 -0400)
committerMinux Ma <minux@golang.org>
Sun, 17 May 2015 00:08:04 +0000 (00:08 +0000)
Fixes #10336.

Change-Id: Idc3f60851aea590575dc293165d4d6f85ae001bc
Reviewed-on: https://go-review.googlesource.com/9645
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/cmd/dist/test.go

index addf61dad97071074d50c52c7021a1b835b53fb0..1f26eef5eec807d0b45d7f865a250440b8a65150 100644 (file)
@@ -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")