mirror of
https://github.com/yuin/goldmark
synced 2025-03-04 23:04:52 +00:00
57 lines
1.1 KiB
Go
57 lines
1.1 KiB
Go
package fuzz
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/yuin/goldmark"
|
|
"github.com/yuin/goldmark/extension"
|
|
"github.com/yuin/goldmark/parser"
|
|
"github.com/yuin/goldmark/renderer/html"
|
|
"github.com/yuin/goldmark/util"
|
|
)
|
|
|
|
func fuzz(f *testing.F) {
|
|
f.Fuzz(func(t *testing.T, orig string) {
|
|
markdown := goldmark.New(
|
|
goldmark.WithParserOptions(
|
|
parser.WithAutoHeadingID(),
|
|
parser.WithAttribute(),
|
|
),
|
|
goldmark.WithRendererOptions(
|
|
html.WithUnsafe(),
|
|
html.WithXHTML(),
|
|
),
|
|
goldmark.WithExtensions(
|
|
extension.DefinitionList,
|
|
extension.Footnote,
|
|
extension.GFM,
|
|
extension.Typographer,
|
|
extension.Linkify,
|
|
extension.Table,
|
|
extension.TaskList,
|
|
),
|
|
)
|
|
var b bytes.Buffer
|
|
if err := markdown.Convert(util.StringToReadOnlyBytes(orig), &b); err != nil {
|
|
panic(err)
|
|
}
|
|
})
|
|
}
|
|
|
|
func FuzzDefault(f *testing.F) {
|
|
bs, err := os.ReadFile("../_test/spec.json")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
var testCases []map[string]interface{}
|
|
if err := json.Unmarshal(bs, &testCases); err != nil {
|
|
panic(err)
|
|
}
|
|
for _, c := range testCases {
|
|
f.Add(c["markdown"])
|
|
}
|
|
fuzz(f)
|
|
}
|