mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/go: make -coverpkg=all skip test-only packages
Otherwise, the added test would fail in an unnecessary way: go build example.com/cov/onlytest: no non-test Go files ... The test script is mimicking other cover_pkgall_*.txt scripts, so it similarly tests both GOPATH and module modes. Fixes #27333. Change-Id: Ie60be569b31d49b173a78556c0669a87ada6799e Reviewed-on: https://go-review.googlesource.com/c/go/+/288292 Trust: Daniel Martí <mvdan@mvdan.cc> Trust: Jay Conrod <jayconrod@google.com> Run-TryBot: Daniel Martí <mvdan@mvdan.cc> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com>
This commit is contained in:
parent
05250429ae
commit
c59b17e5a2
3 changed files with 59 additions and 3 deletions
|
|
@ -290,12 +290,14 @@ func TestPackagesAndErrors(ctx context.Context, p *Package, cover *TestCover) (p
|
||||||
seen[p1] = true
|
seen[p1] = true
|
||||||
}
|
}
|
||||||
for _, p1 := range cover.Pkgs {
|
for _, p1 := range cover.Pkgs {
|
||||||
if !seen[p1] {
|
if seen[p1] {
|
||||||
|
// Don't add duplicate imports.
|
||||||
|
continue
|
||||||
|
}
|
||||||
seen[p1] = true
|
seen[p1] = true
|
||||||
pmain.Internal.Imports = append(pmain.Internal.Imports, p1)
|
pmain.Internal.Imports = append(pmain.Internal.Imports, p1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
allTestImports := make([]*Package, 0, len(pmain.Internal.Imports)+len(imports)+len(ximports))
|
allTestImports := make([]*Package, 0, len(pmain.Internal.Imports)+len(imports)+len(ximports))
|
||||||
allTestImports = append(allTestImports, pmain.Internal.Imports...)
|
allTestImports = append(allTestImports, pmain.Internal.Imports...)
|
||||||
|
|
|
||||||
|
|
@ -716,6 +716,12 @@ func runTest(ctx context.Context, cmd *base.Command, args []string) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// A package which only has test files can't be imported
|
||||||
|
// as a dependency, nor can it be instrumented for coverage.
|
||||||
|
if len(p.GoFiles)+len(p.CgoFiles) == 0 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
// Silently ignore attempts to run coverage on
|
// Silently ignore attempts to run coverage on
|
||||||
// sync/atomic when using atomic coverage mode.
|
// sync/atomic when using atomic coverage mode.
|
||||||
// Atomic coverage mode uses sync/atomic, so
|
// Atomic coverage mode uses sync/atomic, so
|
||||||
|
|
|
||||||
48
src/cmd/go/testdata/script/cover_pkgall_imports.txt
vendored
Normal file
48
src/cmd/go/testdata/script/cover_pkgall_imports.txt
vendored
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
# This test checks that -coverpkg=all can be used
|
||||||
|
# when the package pattern includes packages
|
||||||
|
# which only have tests.
|
||||||
|
# Verifies golang.org/issue/27333, golang.org/issue/43242.
|
||||||
|
|
||||||
|
[short] skip
|
||||||
|
cd $GOPATH/src/example.com/cov
|
||||||
|
|
||||||
|
env GO111MODULE=on
|
||||||
|
go test -coverpkg=all ./...
|
||||||
|
|
||||||
|
env GO111MODULE=off
|
||||||
|
go test -coverpkg=all ./...
|
||||||
|
|
||||||
|
-- $GOPATH/src/example.com/cov/go.mod --
|
||||||
|
module example.com/cov
|
||||||
|
|
||||||
|
-- $GOPATH/src/example.com/cov/notest/notest.go --
|
||||||
|
package notest
|
||||||
|
|
||||||
|
func Foo() {}
|
||||||
|
|
||||||
|
-- $GOPATH/src/example.com/cov/onlytest/onlytest_test.go --
|
||||||
|
package onlytest_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"example.com/cov/notest"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestFoo(t *testing.T) {
|
||||||
|
notest.Foo()
|
||||||
|
}
|
||||||
|
|
||||||
|
-- $GOPATH/src/example.com/cov/withtest/withtest.go --
|
||||||
|
package withtest
|
||||||
|
|
||||||
|
func Bar() {}
|
||||||
|
|
||||||
|
-- $GOPATH/src/example.com/cov/withtest/withtest_test.go --
|
||||||
|
package withtest
|
||||||
|
|
||||||
|
import "testing"
|
||||||
|
|
||||||
|
func TestBar(t *testing.T) {
|
||||||
|
Bar()
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue