mirror of
https://github.com/gonum/gonum.git
synced 2025-10-07 16:11:03 +08:00
graph/formats/dot/internal: add tests for a fuzz data corpus
This commit is contained in:
@@ -11,8 +11,10 @@
|
|||||||
package lexer_test
|
package lexer_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"archive/zip"
|
||||||
"bytes"
|
"bytes"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gonum.org/v1/gonum/graph/formats/dot"
|
"gonum.org/v1/gonum/graph/formats/dot"
|
||||||
@@ -52,3 +54,35 @@ func TestParseFile(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestParseFuzz(t *testing.T) {
|
||||||
|
r, err := zip.OpenReader("../../fuzz/corpus.zip")
|
||||||
|
if err != nil {
|
||||||
|
if os.IsNotExist(err) {
|
||||||
|
t.Skip("no corpus")
|
||||||
|
}
|
||||||
|
t.Fatalf("failed to open corpus: %v", err)
|
||||||
|
}
|
||||||
|
defer r.Close()
|
||||||
|
|
||||||
|
for _, f := range r.File {
|
||||||
|
rc, err := f.Open()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("failed to open %q: %v", f.Name, err)
|
||||||
|
}
|
||||||
|
func() {
|
||||||
|
defer func() {
|
||||||
|
p := recover()
|
||||||
|
if p != nil {
|
||||||
|
t.Errorf("unexpected panic parsing %q: %v", f.Name, p)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
_, err = dot.Parse(rc)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("unexpected error parsing %q: %v", f.Name, err)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
rc.Close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -11,8 +11,10 @@
|
|||||||
package parser_test
|
package parser_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"archive/zip"
|
||||||
"bytes"
|
"bytes"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gonum.org/v1/gonum/graph/formats/dot"
|
"gonum.org/v1/gonum/graph/formats/dot"
|
||||||
@@ -86,6 +88,38 @@ func TestParseFile(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestParseFuzz(t *testing.T) {
|
||||||
|
r, err := zip.OpenReader("../../fuzz/corpus.zip")
|
||||||
|
if err != nil {
|
||||||
|
if os.IsNotExist(err) {
|
||||||
|
t.Skip("no corpus")
|
||||||
|
}
|
||||||
|
t.Fatalf("failed to open corpus: %v", err)
|
||||||
|
}
|
||||||
|
defer r.Close()
|
||||||
|
|
||||||
|
for _, f := range r.File {
|
||||||
|
rc, err := f.Open()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("failed to open %q: %v", f.Name, err)
|
||||||
|
}
|
||||||
|
func() {
|
||||||
|
defer func() {
|
||||||
|
p := recover()
|
||||||
|
if p != nil {
|
||||||
|
t.Errorf("unexpected panic parsing %q: %v", f.Name, p)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
_, err = dot.Parse(rc)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("unexpected error parsing %q: %v", f.Name, err)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
rc.Close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestParseError(t *testing.T) {
|
func TestParseError(t *testing.T) {
|
||||||
golden := []struct {
|
golden := []struct {
|
||||||
path string
|
path string
|
||||||
|
Reference in New Issue
Block a user