github.com/aca02djr/gb@v0.4.1/test/resolve.go (about) 1 package test 2 3 import ( 4 "github.com/constabulary/gb" 5 ) 6 7 type Resolver interface { 8 Projectdir() string 9 ResolvePackage(string) (*gb.Package, error) 10 } 11 12 // TestResolver returns a Resolver that resolves packages, their 13 // dependencies including any internal or external test dependencies. 14 func TestResolver(r Resolver) Resolver { 15 return &testResolver{r} 16 } 17 18 type testResolver struct { 19 Resolver 20 } 21 22 func (r *testResolver) ResolvePackage(path string) (*gb.Package, error) { 23 p, err := r.Resolver.ResolvePackage(path) 24 if err != nil { 25 return nil, err 26 } 27 var imports []string 28 imports = append(imports, p.Package.TestImports...) 29 imports = append(imports, p.Package.XTestImports...) 30 for _, i := range imports { 31 _, err := r.Resolver.ResolvePackage(i) 32 if err != nil { 33 return nil, err 34 } 35 } 36 return p, nil 37 }