]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/vet/all: exit with non-zero error code on failure
authorJosh Bleecher Snyder <josharian@gmail.com>
Tue, 28 Feb 2017 18:08:10 +0000 (10:08 -0800)
committerJosh Bleecher Snyder <josharian@gmail.com>
Tue, 28 Feb 2017 18:10:01 +0000 (18:10 +0000)
Change-Id: I68e60b155c583fa47aa5ca13d591851009a4e571
Reviewed-on: https://go-review.googlesource.com/37571
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/cmd/vet/all/main.go

index b955d8e8908417a50c0ae11ba5c4c45e4188245c..460a7083b1edcb31f66912a753ad3ae0df910464 100644 (file)
@@ -24,6 +24,7 @@ import (
        "strconv"
        "strings"
        "sync"
+       "sync/atomic"
 )
 
 var (
@@ -33,6 +34,7 @@ var (
 )
 
 var cmdGoPath string
+var failed uint32 // updated atomically
 
 func main() {
        log.SetPrefix("vet/all: ")
@@ -61,6 +63,9 @@ func main() {
        default:
                hostPlatform.vet(runtime.GOMAXPROCS(-1))
        }
+       if atomic.LoadUint32(&failed) != 0 {
+               os.Exit(1)
+       }
 }
 
 var hostPlatform = platform{os: build.Default.GOOS, arch: build.Default.GOARCH}
@@ -297,6 +302,7 @@ NextLine:
                        } else {
                                fmt.Fprintf(&buf, "%s:%s: %s\n", file, lineno, msg)
                        }
+                       atomic.StoreUint32(&failed, 1)
                        continue
                }
                w[key]--
@@ -321,6 +327,7 @@ NextLine:
                                for i := 0; i < v; i++ {
                                        fmt.Fprintln(&buf, k)
                                }
+                               atomic.StoreUint32(&failed, 1)
                        }
                }
        }