}
newContent := file.edit.Bytes()
- fmt.Fprintf(fd, "//line %s:1\n", name)
+ fmt.Fprintf(fd, "//line %s:1:1\n", name)
fd.Write(newContent)
// After printing the source tree, add some declarations for the
# 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 'p\.go:4:2' # look for error at coverbad/p.go:4
+[cgo] stderr 'p1\.go:6:2' # 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
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)
- }
-}