internal/coverage: refactor EmitPercent in preparation for bugfix

Refactor cformat.EmitPercent to accept a package filter (list of
packages to report). This is a no-op in terms of exposed coverage
functionality, but we will need this feature in a subsequent patch.

Updates #65570.

Change-Id: I04ddc624a634837ea31c12ec395aa1295a0ea1f1
Reviewed-on: https://go-review.googlesource.com/c/go/+/592204
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: David Chase <drchase@google.com>
This commit is contained in:
Than McIntosh 2024-06-12 21:54:53 +00:00
parent 1683628d29
commit 7196db9e66
4 changed files with 38 additions and 13 deletions

View file

@ -66,7 +66,7 @@ lit.go:99.0,100.0 1 0`)
// Percent output with no aggregation.
noCoverPkg := ""
if err := fm.EmitPercent(&b2, noCoverPkg, false, false); err != nil {
if err := fm.EmitPercent(&b2, nil, noCoverPkg, false, false); err != nil {
t.Fatalf("EmitPercent returned %v", err)
}
wantPercent := strings.Fields(`
@ -81,7 +81,7 @@ lit.go:99.0,100.0 1 0`)
// Percent mode with aggregation.
withCoverPkg := " in ./..."
if err := fm.EmitPercent(&b3, withCoverPkg, false, true); err != nil {
if err := fm.EmitPercent(&b3, nil, withCoverPkg, false, true); err != nil {
t.Fatalf("EmitPercent returned %v", err)
}
wantPercent = strings.Fields(`
@ -110,6 +110,24 @@ total (statements) 62.5%`)
t.Logf("perc2 is %s\n", b3.String())
t.Logf("funcs is %s\n", b4.String())
}
// Percent output with specific packages selected.
{
var b strings.Builder
selpkgs := []string{"foo/bar", "my/pack1"}
if err := fm.EmitPercent(&b, selpkgs, noCoverPkg, false, false); err != nil {
t.Fatalf("EmitPercent returned %v", err)
}
wantPercent := strings.Fields(`
my/pack1 coverage: 66.7% of statements
`)
gotPercent := strings.Fields(b.String())
if !slices.Equal(wantPercent, gotPercent) {
t.Errorf("emit percent: got:\n%+v\nwant:\n%+v\n",
gotPercent, wantPercent)
}
}
}
func TestEmptyPackages(t *testing.T) {
@ -122,7 +140,7 @@ func TestEmptyPackages(t *testing.T) {
{
var b strings.Builder
noCoverPkg := ""
if err := fm.EmitPercent(&b, noCoverPkg, true, false); err != nil {
if err := fm.EmitPercent(&b, nil, noCoverPkg, true, false); err != nil {
t.Fatalf("EmitPercent returned %v", err)
}
wantPercent := strings.Fields(`
@ -140,7 +158,7 @@ func TestEmptyPackages(t *testing.T) {
{
var b strings.Builder
noCoverPkg := ""
if err := fm.EmitPercent(&b, noCoverPkg, true, true); err != nil {
if err := fm.EmitPercent(&b, nil, noCoverPkg, true, true); err != nil {
t.Fatalf("EmitPercent returned %v", err)
}
wantPercent := strings.Fields(`