40 lines
648 B
Go
40 lines
648 B
Go
package interpolate
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
"text/template"
|
|
)
|
|
|
|
func TestFunctionsCalled(t *testing.T) {
|
|
cases := []struct {
|
|
Input string
|
|
Result map[string]struct{}
|
|
}{
|
|
{
|
|
"foo",
|
|
map[string]struct{}{},
|
|
},
|
|
|
|
{
|
|
"foo {{user `bar`}}",
|
|
map[string]struct{}{
|
|
"user": {},
|
|
},
|
|
},
|
|
}
|
|
|
|
funcs := Funcs(&Context{})
|
|
for _, tc := range cases {
|
|
tpl, err := template.New("root").Funcs(funcs).Parse(tc.Input)
|
|
if err != nil {
|
|
t.Fatalf("err parsing: %v\n\n%s", tc.Input, err)
|
|
}
|
|
|
|
actual := functionsCalled(tpl)
|
|
if !reflect.DeepEqual(actual, tc.Result) {
|
|
t.Fatalf("bad: %v\n\ngot: %#v", tc.Input, actual)
|
|
}
|
|
}
|
|
}
|