28 lines
625 B
Go
28 lines
625 B
Go
package configkit
|
|
|
|
import "testing"
|
|
|
|
func FuzzParsePath(f *testing.F) {
|
|
for _, seed := range []string{"", "/", "/service/port", "/a~1b/~0key", "/0", "relative", "/bad~2escape"} {
|
|
f.Add(seed)
|
|
}
|
|
|
|
f.Fuzz(func(t *testing.T, input string) {
|
|
if len(input) > 4096 {
|
|
return
|
|
}
|
|
path, err := ParsePath(input)
|
|
if err != nil {
|
|
return
|
|
}
|
|
canonical := path.String()
|
|
reparsed, err := ParsePath(canonical)
|
|
if err != nil {
|
|
t.Fatalf("canonical path %q did not parse: %v", canonical, err)
|
|
}
|
|
if reparsed.String() != canonical {
|
|
t.Fatalf("path round trip = %q, want %q", reparsed.String(), canonical)
|
|
}
|
|
})
|
|
}
|