diff options
Diffstat (limited to 'vendor/golang.org/x/tools/go/loader/stdlib_test.go')
-rw-r--r-- | vendor/golang.org/x/tools/go/loader/stdlib_test.go | 201 |
1 files changed, 0 insertions, 201 deletions
diff --git a/vendor/golang.org/x/tools/go/loader/stdlib_test.go b/vendor/golang.org/x/tools/go/loader/stdlib_test.go deleted file mode 100644 index 2cd066f..0000000 --- a/vendor/golang.org/x/tools/go/loader/stdlib_test.go +++ /dev/null @@ -1,201 +0,0 @@ -// Copyright 2013 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 loader_test - -// This file enumerates all packages beneath $GOROOT, loads them, plus -// their external tests if any, runs the type checker on them, and -// prints some summary information. - -import ( - "bytes" - "fmt" - "go/ast" - "go/build" - "go/token" - "go/types" - "io/ioutil" - "path/filepath" - "runtime" - "strings" - "testing" - "time" - - "golang.org/x/tools/go/buildutil" - "golang.org/x/tools/go/loader" -) - -func TestStdlib(t *testing.T) { - if runtime.GOOS == "android" { - t.Skipf("incomplete std lib on %s", runtime.GOOS) - } - if testing.Short() { - t.Skip("skipping in short mode; uses tons of memory (golang.org/issue/14113)") - } - - runtime.GC() - t0 := time.Now() - var memstats runtime.MemStats - runtime.ReadMemStats(&memstats) - alloc := memstats.Alloc - - // Load, parse and type-check the program. - ctxt := build.Default // copy - ctxt.GOPATH = "" // disable GOPATH - conf := loader.Config{Build: &ctxt} - for _, path := range buildutil.AllPackages(conf.Build) { - conf.ImportWithTests(path) - } - - prog, err := conf.Load() - if err != nil { - t.Fatalf("Load failed: %v", err) - } - - t1 := time.Now() - runtime.GC() - runtime.ReadMemStats(&memstats) - - numPkgs := len(prog.AllPackages) - if want := 205; numPkgs < want { - t.Errorf("Loaded only %d packages, want at least %d", numPkgs, want) - } - - // Dump package members. - if false { - for pkg := range prog.AllPackages { - fmt.Printf("Package %s:\n", pkg.Path()) - scope := pkg.Scope() - qualifier := types.RelativeTo(pkg) - for _, name := range scope.Names() { - if ast.IsExported(name) { - fmt.Printf("\t%s\n", types.ObjectString(scope.Lookup(name), qualifier)) - } - } - fmt.Println() - } - } - - // Check that Test functions for io/ioutil, regexp and - // compress/bzip2 are all simultaneously present. - // (The apparent cycle formed when augmenting all three of - // these packages by their tests was the original motivation - // for reporting b/7114.) - // - // compress/bzip2.TestBitReader in bzip2_test.go imports io/ioutil - // io/ioutil.TestTempFile in tempfile_test.go imports regexp - // regexp.TestRE2Search in exec_test.go imports compress/bzip2 - for _, test := range []struct{ pkg, fn string }{ - {"io/ioutil", "TestTempFile"}, - {"regexp", "TestRE2Search"}, - {"compress/bzip2", "TestBitReader"}, - } { - info := prog.Imported[test.pkg] - if info == nil { - t.Errorf("failed to load package %q", test.pkg) - continue - } - obj, _ := info.Pkg.Scope().Lookup(test.fn).(*types.Func) - if obj == nil { - t.Errorf("package %q has no func %q", test.pkg, test.fn) - continue - } - } - - // Dump some statistics. - - // determine line count - var lineCount int - prog.Fset.Iterate(func(f *token.File) bool { - lineCount += f.LineCount() - return true - }) - - t.Log("GOMAXPROCS: ", runtime.GOMAXPROCS(0)) - t.Log("#Source lines: ", lineCount) - t.Log("Load/parse/typecheck: ", t1.Sub(t0)) - t.Log("#MB: ", int64(memstats.Alloc-alloc)/1000000) -} - -func TestCgoOption(t *testing.T) { - if testing.Short() { - t.Skip("skipping in short mode; uses tons of memory (golang.org/issue/14113)") - } - switch runtime.GOOS { - // On these systems, the net and os/user packages don't use cgo - // or the std library is incomplete (Android). - case "android", "plan9", "solaris", "windows": - t.Skipf("no cgo or incomplete std lib on %s", runtime.GOOS) - } - // In nocgo builds (e.g. linux-amd64-nocgo), - // there is no "runtime/cgo" package, - // so cgo-generated Go files will have a failing import. - if !build.Default.CgoEnabled { - return - } - // Test that we can load cgo-using packages with - // CGO_ENABLED=[01], which causes go/build to select pure - // Go/native implementations, respectively, based on build - // tags. - // - // Each entry specifies a package-level object and the generic - // file expected to define it when cgo is disabled. - // When cgo is enabled, the exact file is not specified (since - // it varies by platform), but must differ from the generic one. - // - // The test also loads the actual file to verify that the - // object is indeed defined at that location. - for _, test := range []struct { - pkg, name, genericFile string - }{ - {"net", "cgoLookupHost", "cgo_stub.go"}, - {"os/user", "current", "lookup_stubs.go"}, - } { - ctxt := build.Default - for _, ctxt.CgoEnabled = range []bool{false, true} { - conf := loader.Config{Build: &ctxt} - conf.Import(test.pkg) - prog, err := conf.Load() - if err != nil { - t.Errorf("Load failed: %v", err) - continue - } - info := prog.Imported[test.pkg] - if info == nil { - t.Errorf("package %s not found", test.pkg) - continue - } - obj := info.Pkg.Scope().Lookup(test.name) - if obj == nil { - t.Errorf("no object %s.%s", test.pkg, test.name) - continue - } - posn := prog.Fset.Position(obj.Pos()) - t.Logf("%s: %s (CgoEnabled=%t)", posn, obj, ctxt.CgoEnabled) - - gotFile := filepath.Base(posn.Filename) - filesMatch := gotFile == test.genericFile - - if ctxt.CgoEnabled && filesMatch { - t.Errorf("CGO_ENABLED=1: %s found in %s, want native file", - obj, gotFile) - } else if !ctxt.CgoEnabled && !filesMatch { - t.Errorf("CGO_ENABLED=0: %s found in %s, want %s", - obj, gotFile, test.genericFile) - } - - // Load the file and check the object is declared at the right place. - b, err := ioutil.ReadFile(posn.Filename) - if err != nil { - t.Errorf("can't read %s: %s", posn.Filename, err) - continue - } - line := string(bytes.Split(b, []byte("\n"))[posn.Line-1]) - ident := line[posn.Column-1:] - if !strings.HasPrefix(ident, test.name) { - t.Errorf("%s: %s not declared here (looking at %q)", posn, obj, ident) - } - } - } -} |