diff --git a/tpl/template_funcs.go b/tpl/template_funcs.go index 24f0922c7..ba68fb8f3 100644 --- a/tpl/template_funcs.go +++ b/tpl/template_funcs.go @@ -1445,7 +1445,7 @@ func countWords(content interface{}) (int, error) { conv, err := cast.ToStringE(content) if err != nil { - return 0, errors.New("Failed to convert content to string: " + err.Error()) + return 0, fmt.Errorf("Failed to convert content to string: %s", err.Error()) } counter := 0 @@ -1466,7 +1466,7 @@ func countRunes(content interface{}) (int, error) { conv, err := cast.ToStringE(content) if err != nil { - return 0, errors.New("Failed to convert content to string: " + err.Error()) + return 0, fmt.Errorf("Failed to convert content to string: %s", err.Error()) } counter := 0 diff --git a/tpl/template_funcs_test.go b/tpl/template_funcs_test.go index cac729457..14b5ab654 100644 --- a/tpl/template_funcs_test.go +++ b/tpl/template_funcs_test.go @@ -1559,6 +1559,32 @@ func TestInflect(t *testing.T) { } } +func TestCounterFuncs(t *testing.T) { + for i, this := range []struct { + countFunc func(i interface{}) (int, error) + in string + expected int + }{ + {countWords, "Do Be Do Be Do", 5}, + {countWords, "旁边", 2}, + {countRunes, "旁边", 2}, + } { + + result, err := this.countFunc(this.in) + + if err != nil { + t.Errorf("[%d] Unexpected counter error: %s", i, err) + } else if result != this.expected { + t.Errorf("[%d] Count method error, got %v expected %v", i, result, this.expected) + } + + _, err = this.countFunc(t) + if err == nil { + t.Errorf("[%d] Expected Count error", i) + } + } +} + func TestReplace(t *testing.T) { v, _ := replace("aab", "a", "b") assert.Equal(t, "bbb", v)