# HG changeset patch # User Ryan McElroy # Date 1430422416 25200 # Node ID 10a13da8840d9cd5405b232ce24c86741d170b67 # Parent eea3977e6fca8e5e88f9976e138dbb5d0df40fd3 templater: fail more gracefully for blank strings to word diff -r eea3977e6fca -r 10a13da8840d mercurial/templater.py --- a/mercurial/templater.py Wed Apr 29 21:14:59 2015 -0400 +++ b/mercurial/templater.py Thu Apr 30 12:33:36 2015 -0700 @@ -539,7 +539,12 @@ raise error.ParseError(_("word expects two or three arguments, got %d") % len(args)) - num = int(stringify(args[0][0](context, mapping, args[0][1]))) + try: + num = int(stringify(args[0][0](context, mapping, args[0][1]))) + except ValueError: + # i18n: "word" is a keyword + raise error.ParseError( + _("Use strings like '3' for numbers passed to word function")) text = stringify(args[1][0](context, mapping, args[1][1])) if len(args) == 3: splitter = stringify(args[2][0](context, mapping, args[2][1])) diff -r eea3977e6fca -r 10a13da8840d tests/test-command-template.t --- a/tests/test-command-template.t Wed Apr 29 21:14:59 2015 -0400 +++ b/tests/test-command-template.t Thu Apr 30 12:33:36 2015 -0700 @@ -2620,3 +2620,9 @@ $ hg log -Gv -R a --template "{word('0', desc, 'o', 'h', 'b', 'o', 'y')}" hg: parse error: word expects two or three arguments, got 7 [255] + +Test word for invalid numbers + + $ hg log -Gv -R a --template "{word(2, desc)}" + hg: parse error: Use strings like '3' for numbers passed to word function + [255]