internal/fuzz: trim carriage return from version line

On windows hosts, when code is checked out using git with the default
setting of autocrlf=true, carriage returns are appended to source lines
which then prevent the version check from being successful. This removes
carriage returns to allow version matching.

Fixes #52268

Change-Id: I9acc4e907c93a20305f8742cc01687a122a88645
Reviewed-on: https://go-review.googlesource.com/c/go/+/402074
Reviewed-by: Roland Shoemaker <roland@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Dan Kortschak <dan@kortschak.io>
Reviewed-by: Ian Lance Taylor <iant@google.com>
This commit is contained in:
Dan Kortschak 2022-04-25 15:40:00 +09:30
parent 2b0e457b42
commit c3470ca83c
2 changed files with 9 additions and 2 deletions

View File

@ -12,6 +12,7 @@ import (
"go/token"
"math"
"strconv"
"strings"
"unicode/utf8"
)
@ -106,8 +107,9 @@ func unmarshalCorpusFile(b []byte) ([]any, error) {
if len(lines) < 2 {
return nil, fmt.Errorf("must include version and at least one value")
}
if string(lines[0]) != encVersion1 {
return nil, fmt.Errorf("unknown encoding version: %s", lines[0])
version := strings.TrimSuffix(string(lines[0]), "\r")
if version != encVersion1 {
return nil, fmt.Errorf("unknown encoding version: %s", version)
}
var vals []any
for _, line := range lines[1:] {

View File

@ -214,6 +214,11 @@ uint(18446744073709551615)`
}
}(),
},
{
desc: "windows new line",
in: "go test fuzz v1\r\nint(0)\r\n",
want: "go test fuzz v1\nint(0)",
},
}
for _, test := range tests {
t.Run(test.desc, func(t *testing.T) {