go-org-orgwiki/org/fuzz.go
Niklas Fasching 854f8e181a Improve fuzzing function
We not only want to prevent panics, we also want rendering org -> org to not
change the meaning of the file. One easy way to check that (for the
nodes that print to html) whether that holds is to compare the html output.
2018-12-20 15:52:51 +01:00

26 lines
594 B
Go

// +build gofuzz
package org
import (
"bytes"
"strings"
)
// Fuzz function to be used by https://github.com/dvyukov/go-fuzz
func Fuzz(input []byte) int {
d := NewDocument().Silent().Parse(bytes.NewReader(input))
orgOutput, err := d.Write(NewOrgWriter())
if err != nil {
panic(err)
}
htmlOutputA, err := d.Write(NewHTMLWriter())
if err != nil {
panic(err)
}
htmlOutputB, err := NewDocument().Silent().Parse(strings.NewReader(orgOutput)).Write(NewHTMLWriter())
if htmlOutputA != htmlOutputB {
panic("rendered org results in different html than original input")
}
return 0
}