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  }