diff options
author | Kali Kaneko (leap communications) <kali@leap.se> | 2019-01-12 18:39:45 +0100 |
---|---|---|
committer | Ruben Pollan <meskio@sindominio.net> | 2019-01-17 12:30:32 +0100 |
commit | b1247d2d0d51108c910a73891ff3116e5f032ab1 (patch) | |
tree | e9948964f0bfb1ad2df3bc7bad02aa1f41ccfbd8 /vendor/golang.org/x/tools/go/types/typeutil/imports_test.go | |
parent | efcb8312e31b5c2261b1a1e95ace55b322cfcc27 (diff) |
[pkg] all your deps are vendored to us
Diffstat (limited to 'vendor/golang.org/x/tools/go/types/typeutil/imports_test.go')
-rw-r--r-- | vendor/golang.org/x/tools/go/types/typeutil/imports_test.go | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/vendor/golang.org/x/tools/go/types/typeutil/imports_test.go b/vendor/golang.org/x/tools/go/types/typeutil/imports_test.go new file mode 100644 index 0000000..c8ef6d6 --- /dev/null +++ b/vendor/golang.org/x/tools/go/types/typeutil/imports_test.go @@ -0,0 +1,80 @@ +// Copyright 2014 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 typeutil_test + +import ( + "fmt" + "go/ast" + "go/parser" + "go/token" + "go/types" + "testing" + + "golang.org/x/tools/go/types/typeutil" +) + +type closure map[string]*types.Package + +func (c closure) Import(path string) (*types.Package, error) { return c[path], nil } + +func TestDependencies(t *testing.T) { + packages := make(map[string]*types.Package) + conf := types.Config{ + Importer: closure(packages), + } + fset := token.NewFileSet() + + // All edges go to the right. + // /--D--B--A + // F \_C_/ + // \__E_/ + for i, content := range []string{ + `package a`, + `package c; import (_ "a")`, + `package b; import (_ "a")`, + `package e; import (_ "c")`, + `package d; import (_ "b"; _ "c")`, + `package f; import (_ "d"; _ "e")`, + } { + f, err := parser.ParseFile(fset, fmt.Sprintf("%d.go", i), content, 0) + if err != nil { + t.Fatal(err) + } + pkg, err := conf.Check(f.Name.Name, fset, []*ast.File{f}, nil) + if err != nil { + t.Fatal(err) + } + packages[pkg.Path()] = pkg + } + + for _, test := range []struct { + roots, want string + }{ + {"a", "a"}, + {"b", "ab"}, + {"c", "ac"}, + {"d", "abcd"}, + {"e", "ace"}, + {"f", "abcdef"}, + + {"be", "abce"}, + {"eb", "aceb"}, + {"de", "abcde"}, + {"ed", "acebd"}, + {"ef", "acebdf"}, + } { + var pkgs []*types.Package + for _, r := range test.roots { + pkgs = append(pkgs, packages[string(r)]) + } + var got string + for _, p := range typeutil.Dependencies(pkgs...) { + got += p.Path() + } + if got != test.want { + t.Errorf("Dependencies(%q) = %q, want %q", test.roots, got, test.want) + } + } +} |