torrent/metainfo/fuzz_test.go

48 lines
795 B
Go

//go:build go1.18
// +build go1.18
package metainfo
import (
"os"
"path/filepath"
"testing"
"github.com/anacrolix/torrent/bencode"
)
func Fuzz(f *testing.F) {
// Is there an OS-agnostic version of Glob?
matches, err := filepath.Glob(filepath.FromSlash("testdata/*.torrent"))
if err != nil {
f.Fatal(err)
}
for _, m := range matches {
b, err := os.ReadFile(m)
if err != nil {
f.Fatal(err)
}
f.Logf("adding %q", m)
f.Add(b)
}
f.Fuzz(func(t *testing.T, b []byte) {
var mi MetaInfo
err := bencode.Unmarshal(b, &mi)
if err != nil {
t.Skip(err)
}
_, err = bencode.Marshal(mi)
if err != nil {
panic(err)
}
info, err := mi.UnmarshalInfo()
if err != nil {
t.Skip(err)
}
_, err = bencode.Marshal(info)
if err != nil {
panic(err)
}
})
}