# HG changeset patch # User Yuya Nishihara # Date 2016-02-14 04:05:09 # Node ID d81437c91a2665d9638c920d5c4b9391c683d810 # Parent ac371d4c007f4252fa5402c436acf14ec584073a templater: fix pad() to evaluate int argument and handle error diff --git a/mercurial/templater.py b/mercurial/templater.py --- a/mercurial/templater.py +++ b/mercurial/templater.py @@ -398,7 +398,9 @@ def pad(context, mapping, args): # i18n: "pad" is a keyword raise error.ParseError(_("pad() expects two to four arguments")) - width = int(args[1][1]) + width = evalinteger(context, mapping, args[1], + # i18n: "pad" is a keyword + _("pad() expects an integer width")) text = stringify(args[0][0](context, mapping, args[0][1])) diff --git a/tests/test-command-template.t b/tests/test-command-template.t --- a/tests/test-command-template.t +++ b/tests/test-command-template.t @@ -3244,6 +3244,14 @@ Test template string in pad function $ hg log -r 0 -T '{pad(r"\{rev}", 10)} {author|user}\n' \{rev} test +Test width argument passed to pad function + + $ hg log -r 0 -T '{pad(rev, "1{"0"}")} {author|user}\n' + 0 test + $ hg log -r 0 -T '{pad(rev, "not an int")}\n' + hg: parse error: pad() expects an integer width + [255] + Test ifcontains function $ hg log --template '{rev} {ifcontains(rev, "2 two 0", "is in the string", "is not")}\n'