mirror of https://github.com/golang/go.git
cmd/go: disambiguate for-test packages in failure output
Now that we can tell when a package is a split-off copy for testing, show that in the build failures. For example, instead of: # regexp/syntax ../../regexp/syntax/parse.go:9:2: can't find import: "strings" # path/filepath ../../path/filepath/match.go:12:2: can't find import: "strings" # flag ../../flag/flag.go:75:2: can't find import: "strings" we now print # regexp/syntax [strings.test] ../../regexp/syntax/parse.go:9:2: can't find import: "strings" # path/filepath [strings.test] ../../path/filepath/match.go:12:2: can't find import: "strings" # flag [strings.test] ../../flag/flag.go:75:2: can't find import: "strings" which gives more of a hint about what is wrong. This is especially helpful if a package is being built multiple times, since it explains why an error might appear multiple times: $ go test regexp encoding/json # regexp ../../regexp/exec.go:12:9: undefined: x # regexp [regexp.test] ../../regexp/exec.go:12:9: undefined: x FAIL regexp [build failed] FAIL encoding/json [build failed] $ Change-Id: Ie325796f6c3cf0e23f306066be8e65a30cb6b939 Reviewed-on: https://go-review.googlesource.com/108155 Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com>
This commit is contained in:
parent
296e676575
commit
1a64025f2b
|
|
@ -122,6 +122,14 @@ func (p *Package) AllFiles() []string {
|
|||
)
|
||||
}
|
||||
|
||||
// Desc returns the package "description", for use in b.showOutput.
|
||||
func (p *Package) Desc() string {
|
||||
if p.ForTest != "" {
|
||||
return p.ImportPath + " [" + p.ForTest + ".test]"
|
||||
}
|
||||
return p.ImportPath
|
||||
}
|
||||
|
||||
type PackageInternal struct {
|
||||
// Unexported fields are not part of the public API.
|
||||
Build *build.Package
|
||||
|
|
|
|||
|
|
@ -573,7 +573,7 @@ func (b *Builder) build(a *Action) (err error) {
|
|||
objpkg := objdir + "_pkg_.a"
|
||||
ofile, out, err := BuildToolchain.gc(b, a, objpkg, icfg.Bytes(), len(sfiles) > 0, gofiles)
|
||||
if len(out) > 0 {
|
||||
b.showOutput(a, a.Package.Dir, a.Package.ImportPath, b.processOutput(out))
|
||||
b.showOutput(a, a.Package.Dir, a.Package.Desc(), b.processOutput(out))
|
||||
if err != nil {
|
||||
return errPrintedOutput
|
||||
}
|
||||
|
|
@ -2411,13 +2411,13 @@ func (b *Builder) swigOne(a *Action, p *load.Package, file, objdir string, pcCFL
|
|||
if bytes.Contains(out, []byte("-intgosize")) || bytes.Contains(out, []byte("-cgo")) {
|
||||
return "", "", errors.New("must have SWIG version >= 3.0.6")
|
||||
}
|
||||
b.showOutput(a, p.Dir, p.ImportPath, b.processOutput(out)) // swig error
|
||||
b.showOutput(a, p.Dir, p.Desc(), b.processOutput(out)) // swig error
|
||||
return "", "", errPrintedOutput
|
||||
}
|
||||
return "", "", err
|
||||
}
|
||||
if len(out) > 0 {
|
||||
b.showOutput(a, p.Dir, p.ImportPath, b.processOutput(out)) // swig warning
|
||||
b.showOutput(a, p.Dir, p.Desc(), b.processOutput(out)) // swig warning
|
||||
}
|
||||
|
||||
// If the input was x.swig, the output is x.go in the objdir.
|
||||
|
|
|
|||
|
|
@ -295,7 +295,7 @@ func (gcToolchain) pack(b *Builder, a *Action, afile string, ofiles []string) er
|
|||
return nil
|
||||
}
|
||||
if err := packInternal(absAfile, absOfiles); err != nil {
|
||||
b.showOutput(a, p.Dir, p.ImportPath, err.Error()+"\n")
|
||||
b.showOutput(a, p.Dir, p.Desc(), err.Error()+"\n")
|
||||
return errPrintedOutput
|
||||
}
|
||||
return nil
|
||||
|
|
|
|||
Loading…
Reference in New Issue