diff options
author | Russ Cox <rsc@golang.org> | 2012-01-31 10:38:07 -0500 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2012-01-31 10:38:07 -0500 |
commit | 9a15c2186c59544d4587487f075ccee385373823 (patch) | |
tree | 1d1acdab017c2452a1acd171a41b5417c753008d /src/cmd/api/goapi_test.go | |
parent | 6f428f097915ab40fc417713ac613a7fda46b713 (diff) | |
download | go-git-9a15c2186c59544d4587487f075ccee385373823.tar.gz |
build: move goapi, quietgcc, cgo, gotype, ebnflint into go-tool
R=golang-dev, r
CC=golang-dev
https://golang.org/cl/5552054
Diffstat (limited to 'src/cmd/api/goapi_test.go')
-rw-r--r-- | src/cmd/api/goapi_test.go | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/src/cmd/api/goapi_test.go b/src/cmd/api/goapi_test.go new file mode 100644 index 0000000000..dbbec46b0d --- /dev/null +++ b/src/cmd/api/goapi_test.go @@ -0,0 +1,76 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package main + +import ( + "flag" + "fmt" + "go/build" + "io/ioutil" + "os" + "path/filepath" + "sort" + "strings" + "testing" +) + +var ( + updateGolden = flag.Bool("updategolden", false, "update golden files") +) + +func TestGolden(t *testing.T) { + td, err := os.Open("testdata/src/pkg") + if err != nil { + t.Fatal(err) + } + fis, err := td.Readdir(0) + if err != nil { + t.Fatal(err) + } + for _, fi := range fis { + if !fi.IsDir() { + continue + } + w := NewWalker() + w.wantedPkg[fi.Name()] = true + + w.tree = &build.Tree{Path: "testdata", Goroot: true} + goldenFile := filepath.Join("testdata", "src", "pkg", fi.Name(), "golden.txt") + w.WalkPackage(fi.Name()) + + if *updateGolden { + os.Remove(goldenFile) + f, err := os.Create(goldenFile) + if err != nil { + t.Fatal(err) + } + for _, feat := range w.Features() { + fmt.Fprintf(f, "%s\n", feat) + } + f.Close() + } + + bs, err := ioutil.ReadFile(goldenFile) + if err != nil { + t.Fatalf("opening golden.txt for package %q: %v", fi.Name(), err) + } + wanted := strings.Split(string(bs), "\n") + sort.Strings(wanted) + for _, feature := range wanted { + if feature == "" { + continue + } + _, ok := w.features[feature] + if !ok { + t.Errorf("package %s: missing feature %q", fi.Name(), feature) + } + delete(w.features, feature) + } + + for _, feature := range w.Features() { + t.Errorf("package %s: extra feature not in golden file: %q", fi.Name(), feature) + } + } +} |