changeset 24886:10a13da8840d stable

templater: fail more gracefully for blank strings to word
author Ryan McElroy <rmcelroy@fb.com>
date Thu, 30 Apr 2015 12:33:36 -0700
parents eea3977e6fca
children ab9390165429
files mercurial/templater.py tests/test-command-template.t
diffstat 2 files changed, 12 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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]))
--- 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]