Update fuzz to use new standard library support
This commit is contained in:
parent
a9aec0bb79
commit
2daad6e564
|
@ -1,30 +0,0 @@
|
|||
//go:build gofuzz
|
||||
// +build gofuzz
|
||||
|
||||
package bencode
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"reflect"
|
||||
)
|
||||
|
||||
func Fuzz(b []byte) int {
|
||||
var d interface{}
|
||||
err := Unmarshal(b, &d)
|
||||
if err != nil {
|
||||
return 0
|
||||
}
|
||||
b0, err := Marshal(d)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
var d0 interface{}
|
||||
err = Unmarshal(b0, &d0)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
if !reflect.DeepEqual(d, d0) {
|
||||
panic(fmt.Sprintf("%s != %s", d, d0))
|
||||
}
|
||||
return 1
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
//go:build go1.18
|
||||
|
||||
package bencode
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
qt "github.com/frankban/quicktest"
|
||||
)
|
||||
|
||||
func Fuzz(f *testing.F) {
|
||||
f.Fuzz(func(t *testing.T, b []byte) {
|
||||
c := qt.New(t)
|
||||
var d interface{}
|
||||
err := Unmarshal(b, &d)
|
||||
if err != nil {
|
||||
t.Skip()
|
||||
}
|
||||
b0, err := Marshal(d)
|
||||
c.Assert(err, qt.IsNil)
|
||||
var d0 interface{}
|
||||
err = Unmarshal(b0, &d0)
|
||||
c.Assert(err, qt.IsNil)
|
||||
c.Assert(d0, qt.DeepEquals, d)
|
||||
})
|
||||
}
|
|
@ -1,29 +0,0 @@
|
|||
//go:build gofuzz
|
||||
// +build gofuzz
|
||||
|
||||
package metainfo
|
||||
|
||||
import (
|
||||
"github.com/anacrolix/torrent/bencode"
|
||||
)
|
||||
|
||||
func Fuzz(b []byte) int {
|
||||
var mi MetaInfo
|
||||
err := bencode.Unmarshal(b, &mi)
|
||||
if err != nil {
|
||||
return 0
|
||||
}
|
||||
_, err = bencode.Marshal(mi)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
info, err := mi.UnmarshalInfo()
|
||||
if err != nil {
|
||||
return 0
|
||||
}
|
||||
_, err = bencode.Marshal(info)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return 1
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
//go: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)
|
||||
}
|
||||
})
|
||||
}
|
Loading…
Reference in New Issue