| [short] skip |
| [gccgo] skip |
| |
| # Test line numbers in cover errors. |
| |
| # Get errors from a go test into stderr.txt |
| ! go test coverbad |
| stderr 'p\.go:4' # look for error at coverbad/p.go:4 |
| [cgo] stderr 'p1\.go:6' # look for error at coverbad/p.go:6 |
| ! stderr $WORK # make sure temporary directory isn't in error |
| |
| cp stderr $WORK/stderr.txt |
| |
| # Clean out character positions from stderr.txt |
| # It's OK that stderr2 drops the character position in the error, |
| # because of the //line directive (see golang.org/issue/22662). |
| go run clean_charpos.go $WORK/stderr.txt & |
| |
| # Get errors from coverage into stderr2.txt |
| ! go test -cover coverbad |
| cp stderr $WORK/stderr2.txt |
| |
| wait # for go run above |
| |
| cmp $WORK/stderr.txt $WORK/stderr2.txt |
| |
| -- go.mod -- |
| module coverbad |
| |
| go 1.16 |
| -- p.go -- |
| package p |
| |
| func f() { |
| g() |
| } |
| -- p1.go -- |
| package p |
| |
| import "C" |
| |
| func h() { |
| j() |
| } |
| -- p_test.go -- |
| package p |
| |
| import "testing" |
| |
| func Test(t *testing.T) {} |
| -- clean_charpos.go -- |
| // +build ignore |
| |
| package main |
| |
| import ( |
| "log" |
| "os" |
| "strings" |
| ) |
| |
| func main() { |
| log.SetFlags(0) |
| b, err := os.ReadFile(os.Args[1]) |
| if err != nil { |
| log.Fatal(err) |
| } |
| s := strings.ReplaceAll(string(b), "p.go:4:2:", "p.go:4:") |
| s = strings.ReplaceAll(s, "p1.go:6:2:", "p1.go:6:") |
| os.WriteFile(os.Args[1], []byte(s), 0644) |
| if err != nil { |
| log.Fatal(err) |
| } |
| } |