[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) } }