go__fuzz_demo/fuzz_test.go
2022-02-04 22:07:21 +01:00

30 lines
623 B
Go

// Zgo:build go1.18
// +Zbuild go1.18
package fuzz
import (
"net/url"
"reflect"
"testing"
)
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\n",
query, query2)
}
})
}