goldmark/renderer/renderer_test.go
Abhinav Gupta 120b8c7c14 renderer: Helpful panic for unknown NodeKind
When rendering a Node, Renderer looks up the NodeRenderer for that
node's kind in a slice. That will panic with an "index out of range"
error if a node renderer for that node kind has not been registered.

    panic: runtime error: index out of range [1] with length 1

This changes Renderer to panic with a more helpful error message if the
node kind is unrecognized.

    panic: unrecognized node kind Document cannot be rendered:
    register a renderer for this node kind first
2020-03-07 08:38:51 -08:00

35 lines
664 B
Go

package renderer
import (
"io/ioutil"
"strings"
"testing"
"github.com/yuin/goldmark/parser"
"github.com/yuin/goldmark/text"
)
func TestRenderUnknownNode(t *testing.T) {
defer func() {
r := recover()
if r == nil {
t.Errorf("Render() should panic")
return
}
msg, ok := r.(string)
if !ok {
t.Errorf("Render() should panic with a string")
}
if !strings.Contains(msg, "unrecognized node kind Document") {
t.Errorf("Render() panicked with unexpected message: %v", msg)
}
}()
src := []byte("# Foo\n\nHello world")
node := parser.NewParser().Parse(text.NewReader(src))
r := NewRenderer()
r.Render(ioutil.Discard, src, node)
}