diff options
| author | Brad Fitzpatrick <bradfitz@golang.org> | 2012-03-17 11:20:46 -0700 |
|---|---|---|
| committer | Brad Fitzpatrick <bradfitz@golang.org> | 2012-03-17 11:20:46 -0700 |
| commit | f69132d7ad89c6507af6079bd75d2fe50f7f7fe8 (patch) | |
| tree | 9c90f1dfec3a57871f123faf835ff86451b9b0c8 /src/cmd/api | |
| parent | 883a96d9509c62fddc03fedf4b711c738dc7ac9e (diff) | |
| download | go-f69132d7ad89c6507af6079bd75d2fe50f7f7fe8.tar.xz | |
build: catch API changes during build
Adds new file api/go1.txt, locking down the current API.
Any changes to the API will need to update that file.
run.bash (but not make.bash, or Windows) will check for
accidental API changes.
R=golang-dev, dsymonds, rsc
CC=golang-dev
https://golang.org/cl/5820070
Diffstat (limited to 'src/cmd/api')
| -rw-r--r-- | src/cmd/api/goapi.go | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/cmd/api/goapi.go b/src/cmd/api/goapi.go index 1782b73ceb..7363f6d824 100644 --- a/src/cmd/api/goapi.go +++ b/src/cmd/api/goapi.go @@ -131,7 +131,7 @@ func main() { if err != nil { log.Fatalf("Error reading file %s: %v", *checkFile, err) } - v1 := strings.Split(string(bs), "\n") + v1 := strings.Split(strings.TrimSpace(string(bs)), "\n") sort.Strings(v1) v2 := features take := func(sl *[]string) string { @@ -139,17 +139,24 @@ func main() { *sl = (*sl)[1:] return s } + changes := false for len(v1) > 0 || len(v2) > 0 { switch { case len(v2) == 0 || v1[0] < v2[0]: fmt.Fprintf(bw, "-%s\n", take(&v1)) + changes = true case len(v1) == 0 || v1[0] > v2[0]: fmt.Fprintf(bw, "+%s\n", take(&v2)) + changes = true default: take(&v1) take(&v2) } } + if changes { + bw.Flush() + os.Exit(1) + } } else { for _, f := range features { fmt.Fprintf(bw, "%s\n", f) @@ -284,7 +291,9 @@ func (w *Walker) WalkPackage(name string) { } } - log.Printf("package %s", name) + if *verbose { + log.Printf("package %s", name) + } pop := w.pushScope("pkg " + name) defer pop() |
