Merge pull request #6 from ledgerwatch/fuzz_example

add fuzz example
This commit is contained in:
Alex Sharov 2021-07-28 11:14:41 +07:00 committed by GitHub
commit c40fc0e3c2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

28
txpool/pool_fuzz.go Normal file
View File

@ -0,0 +1,28 @@
// +build gofuzzbeta
package txpool
// https://blog.golang.org/fuzz-beta
// golang.org/s/draft-fuzzing-design
//gotip doc testing
//gotip doc testing.F
//gotip doc testing.F.Add
//gotip doc testing.F.Fuzz
func FuzzParseQuery(f *testing.F) {
f.Add("x=1&y=2")
f.Fuzz(func(t *testing.T, queryStr string) {
query, err := url.ParseQuery(queryStr)
if err != nil {
t.Skip()
}
queryStr2 := query.Encode()
query2, err := url.ParseQuery(queryStr2)
if err != nil {
t.Fatalf("ParseQuery failed to decode a valid encoded query %s: %v", queryStr2, err)
}
if !reflect.DeepEqual(query, query2) {
t.Errorf("ParseQuery gave different query after being encoded\nbefore: %v\nafter: %v", query, query2)
}
})
}