Include Package.XTestImports in test imports
diff --git a/dependency/resolver.go b/dependency/resolver.go index b3000ee..edcc13c 100644 --- a/dependency/resolver.go +++ b/dependency/resolver.go
@@ -3,6 +3,7 @@ import ( "container/list" "runtime" + "sort" //"go/build" "os" "path/filepath" @@ -303,7 +304,7 @@ } } else { imps = p.Imports - testImps = p.TestImports + testImps = dedupeStrings(p.TestImports, p.XTestImports) } // We are only looking for dependencies in vendor. No root, cgo, etc. @@ -536,7 +537,7 @@ continue } else { if testDeps { - imps = pkg.TestImports + imps = dedupeStrings(pkg.TestImports, pkg.XTestImports) } else { imps = pkg.Imports } @@ -799,7 +800,7 @@ return []string{}, err } else { if testDeps { - imps = p.TestImports + imps = dedupeStrings(p.TestImports, p.XTestImports) } else { imps = p.Imports } @@ -1078,3 +1079,29 @@ return basedir, nil } + +// helper func to merge, dedupe, and sort strings +func dedupeStrings(s1, s2 []string) (r []string) { + dedupe := make(map[string]bool) + + if len(s1) > 0 && len(s2) > 0 { + for _, i := range s1 { + dedupe[i] = true + } + for _, i := range s2 { + dedupe[i] = true + } + + for i := range dedupe { + r = append(r, i) + } + // And then re-sort them + sort.Strings(r) + } else if len(s1) > 0 { + r = s1 + } else if len(s2) > 0 { + r = s2 + } + + return +}