tpl: Add highlight test

This commit is contained in:
Bjørn Erik Pedersen 2016-02-07 15:15:27 +01:00
parent 0a8583a451
commit 4dcb63c2f6
2 changed files with 27 additions and 7 deletions

View file

@ -1132,15 +1132,14 @@ func returnWhenSet(a, k interface{}) interface{} {
}
// highlight returns an HTML string with syntax highlighting applied.
func highlight(in interface{}, lang, opts string) template.HTML {
var str string
av := reflect.ValueOf(in)
switch av.Kind() {
case reflect.String:
str = av.String()
func highlight(in interface{}, lang, opts string) (template.HTML, error) {
str, err := cast.ToStringE(in)
if err != nil {
return "", err
}
return template.HTML(helpers.Highlight(html.UnescapeString(str), lang, opts))
return template.HTML(helpers.Highlight(html.UnescapeString(str), lang, opts)), nil
}
var markdownTrimPrefix = []byte("<p>")

View file

@ -25,6 +25,7 @@ import (
"path"
"reflect"
"runtime"
"strings"
"testing"
"time"
)
@ -1533,6 +1534,26 @@ func TestChomp(t *testing.T) {
}
}
func TestHighlight(t *testing.T) {
code := "func boo() {}"
highlighted, err := highlight(code, "go", "")
if err != nil {
t.Fatal("Highlight returned error:", err)
}
// this depends on a Pygments installation, but will always contain the function name.
if !strings.Contains(string(highlighted), "boo") {
t.Errorf("Highlight mismatch, got %v", highlighted)
}
_, err = highlight(t, "go", "")
if err == nil {
t.Error("Expected highlight error")
}
}
func TestInflect(t *testing.T) {
for i, this := range []struct {
inflectFunc func(i interface{}) (string, error)