1
mirror of https://github.com/rclone/rclone synced 2024-11-28 06:41:41 +01:00
rclone/fs/fspath/fuzz.go
2021-09-09 20:43:59 +03:00

48 lines
772 B
Go

//go:build gofuzz
// +build gofuzz
/*
Fuzz test the Parse function
Generate corpus
go test -v -make-corpus
Install go fuzz
go get -u github.com/dvyukov/go-fuzz/go-fuzz github.com/dvyukov/go-fuzz/go-fuzz-build
Compile and fuzz
go-fuzz-build
go-fuzz
Tidy up
rm -rf corpus/ crashers/ suppressions/
git co ../../go.mod ../../go.sum
*/
package fspath
func Fuzz(data []byte) int {
path := string(data)
parsed, err := Parse(path)
if err != nil {
return 0
}
if parsed.Name == "" {
if parsed.ConfigString != "" {
panic("bad ConfigString")
}
if parsed.Path != path {
panic("local path not preserved")
}
} else {
if parsed.ConfigString+":"+parsed.Path != path {
panic("didn't split properly")
}
}
return 0
}