mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/{go,cover,covdata}: fix 'package main' inconsistent handling
Fix a buglet in cmd/cover in how we handle package name/path for the "go build -o foo.exe *.go" and "go run *.go" cases. The go command assigns a dummy import path of "command-line-arguments" to the main package built in these cases; rather than expose this dummy to the user in coverage reports, the cover tool had a special case hack intended to rewrite such package paths to "main". The hack was too general, however, and was rewriting the import path of all packages with (p.name == "main") to an import path of "main". The hack also produced unexpected results for cases such as go test -cover foo.go foo_test.go This patch removes the hack entirely, leaving the package path for such cases as "command-line-arguments". Fixes #57169. Change-Id: Ib6071db5e3485da3b8c26e16ef57f6fa1712402c Reviewed-on: https://go-review.googlesource.com/c/go/+/456237 TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Than McIntosh <thanm@google.com> Reviewed-by: Bryan Mills <bcmills@google.com>
This commit is contained in:
parent
0aad4d3257
commit
7973b0e508
5 changed files with 81 additions and 24 deletions
|
|
@ -157,7 +157,7 @@ func runHarness(t *testing.T, harnessPath string, tp string, setGoCoverDir bool,
|
|||
|
||||
func testForSpecificFunctions(t *testing.T, dir string, want []string, avoid []string) string {
|
||||
args := []string{"tool", "covdata", "debugdump",
|
||||
"-live", "-pkg=main", "-i=" + dir}
|
||||
"-live", "-pkg=command-line-arguments", "-i=" + dir}
|
||||
t.Logf("running: go %v\n", args)
|
||||
cmd := exec.Command(testenv.GoToolPath(t), args...)
|
||||
b, err := cmd.CombinedOutput()
|
||||
|
|
@ -167,18 +167,21 @@ func testForSpecificFunctions(t *testing.T, dir string, want []string, avoid []s
|
|||
output := string(b)
|
||||
rval := ""
|
||||
for _, f := range want {
|
||||
wf := "Func: " + f
|
||||
wf := "Func: " + f + "\n"
|
||||
if strings.Contains(output, wf) {
|
||||
continue
|
||||
}
|
||||
rval += fmt.Sprintf("error: output should contain %q but does not\n", wf)
|
||||
}
|
||||
for _, f := range avoid {
|
||||
wf := "Func: " + f
|
||||
wf := "Func: " + f + "\n"
|
||||
if strings.Contains(output, wf) {
|
||||
rval += fmt.Sprintf("error: output should not contain %q but does\n", wf)
|
||||
}
|
||||
}
|
||||
if rval != "" {
|
||||
t.Logf("=-= begin output:\n" + output + "\n=-= end output\n")
|
||||
}
|
||||
return rval
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue