~rogpeppe/juju-core/themue-058-debug-log-api

« back to all changes in this revision

Viewing changes to testing/testbase/imports.go

  • Committer: Frank Mueller
  • Date: 2014-01-23 14:14:49 UTC
  • mfrom: (2152.1.95 juju-core)
  • Revision ID: frank.mueller@canonical.com-20140123141449-b30l57y7gs3wjkpw
debugger: merged trunk and fixed permission and interface problems

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
        gc "launchpad.net/gocheck"
13
13
)
14
14
 
 
15
const jujuPkgPrefix = "launchpad.net/juju-core/"
 
16
 
15
17
// FindJujuCoreImports returns a sorted list of juju-core packages that are
16
18
// imported by the packageName parameter.  The resulting list removes the
17
19
// common prefix "launchpad.net/juju-core/" leaving just the short names.
18
20
func FindJujuCoreImports(c *gc.C, packageName string) []string {
 
21
 
 
22
        var result []string
 
23
        allpkgs := make(map[string]bool)
 
24
 
 
25
        findJujuCoreImports(c, packageName, allpkgs)
 
26
 
 
27
        for name := range allpkgs {
 
28
                result = append(result, name[len(jujuPkgPrefix):])
 
29
        }
 
30
 
 
31
        sort.Strings(result)
 
32
        return result
 
33
}
 
34
 
 
35
// findJujuCoreImports recursively adds all imported packages of given
 
36
// package (packageName) to allpkgs map.
 
37
func findJujuCoreImports(c *gc.C, packageName string, allpkgs map[string]bool) {
 
38
 
19
39
        var imports []string
20
40
 
21
41
        for _, root := range build.Default.SrcDirs() {
30
50
                c.Fatalf(packageName + " not found")
31
51
        }
32
52
 
33
 
        var result []string
34
 
        const prefix = "launchpad.net/juju-core/"
35
53
        for _, name := range imports {
36
 
                if strings.HasPrefix(name, prefix) {
37
 
                        result = append(result, name[len(prefix):])
 
54
                if strings.HasPrefix(name, jujuPkgPrefix) {
 
55
                        allpkgs[name] = true
 
56
                        findJujuCoreImports(c, name, allpkgs)
38
57
                }
39
58
        }
40
 
        sort.Strings(result)
41
 
        return result
 
59
 
42
60
}