mirror of https://github.com/golang/go.git
cmd/go: diagnose invalid coverage runs
# bufio coverage analysis cannot handle package (bufio_test imports testing imports bufio) # bytes coverage analysis cannot handle package (bytes_test imports encoding/base64 imports bytes) # crypto/cipher coverage analysis cannot handle package (cipher_test imports crypto/aes imports crypto/cipher) # debug/dwarf coverage analysis cannot handle package (dwarf_test imports debug/elf imports debug/dwarf) # errors coverage analysis cannot handle package (errors_test imports fmt imports errors) # flag coverage analysis cannot handle package (flag_test imports testing imports flag) # fmt coverage analysis cannot handle package (fmt_test imports testing imports fmt) # go/ast coverage analysis cannot handle package (ast_test imports go/format imports go/ast) # image coverage analysis cannot handle package (image_test imports image/gif imports image) # io coverage analysis cannot handle package (io_test imports bytes imports io) # math coverage analysis cannot handle package (math_test imports fmt imports math) # net/http coverage analysis cannot handle package (http_test imports net/http/httptest imports net/http) # os coverage analysis cannot handle package (os_test imports flag imports os) # path/filepath coverage analysis cannot handle package (filepath_test imports io/ioutil imports path/filepath) # reflect coverage analysis cannot handle package (reflect_test imports flag imports reflect) # runtime coverage analysis cannot handle package (runtime_test imports fmt imports runtime) # runtime/pprof coverage analysis cannot handle package (pprof_test imports testing imports runtime/pprof) # sort coverage analysis cannot handle package (sort_test imports testing imports sort) # strconv coverage analysis cannot handle package (strconv_test imports fmt imports strconv) # strings coverage analysis cannot handle package (strings_test imports testing imports strings) # sync coverage analysis cannot handle package (sync_test imports fmt imports sync) # sync/atomic coverage analysis cannot handle package (atomic_test imports testing imports sync/atomic) # syscall coverage analysis cannot handle package (syscall_test imports flag imports syscall) # text/tabwriter coverage analysis cannot handle package (tabwriter_test imports testing imports text/tabwriter) # time coverage analysis cannot handle package (time_test imports encoding/gob imports time) # unicode coverage analysis cannot handle package (unicode_test imports testing imports unicode) # unicode/utf8 coverage analysis cannot handle package (utf8_test imports bytes imports unicode/utf8) R=r CC=golang-dev https://golang.org/cl/10216043
This commit is contained in:
parent
da634dd703
commit
7ea75a5f18
|
|
@ -435,6 +435,15 @@ func runTest(cmd *Command, args []string) {
|
|||
b.do(root)
|
||||
}
|
||||
|
||||
func contains(x []string, s string) bool {
|
||||
for _, t := range x {
|
||||
if t == s {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (b *builder) test(p *Package) (buildAction, runAction, printAction *action, err error) {
|
||||
if len(p.TestGoFiles)+len(p.XTestGoFiles) == 0 {
|
||||
build := &action{p: p}
|
||||
|
|
@ -468,6 +477,19 @@ func (b *builder) test(p *Package) (buildAction, runAction, printAction *action,
|
|||
return nil, nil, nil, p1.Error
|
||||
}
|
||||
ximports = append(ximports, p1)
|
||||
|
||||
// In coverage mode, we rewrite the package p's sources.
|
||||
// All code that imports p must be rebuilt with the updated
|
||||
// copy, or else coverage will at the least be incomplete
|
||||
// (and sometimes we get link errors due to the mismatch as well).
|
||||
// The external test itself imports package p, of course, but
|
||||
// we make sure that sees the new p. Any other code in the test
|
||||
// - that is, any code imported by the external test that in turn
|
||||
// imports p - needs to be rebuilt too. For now, just report
|
||||
// that coverage is unavailable.
|
||||
if testCover != "" && contains(p1.Deps, p.ImportPath) {
|
||||
return nil, nil, nil, fmt.Errorf("coverage analysis cannot handle package (%s_test imports %s imports %s)", p.Name, path, p.ImportPath)
|
||||
}
|
||||
}
|
||||
stk.pop()
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue