templater: reject bad fillchar argument passed to pad()
Otherwise TypeError would be raised.
--- a/mercurial/templater.py Sat Mar 18 20:11:15 2017 +0900
+++ b/mercurial/templater.py Sat Mar 18 20:38:44 2017 +0900
@@ -575,6 +575,9 @@
fillchar = ' '
if len(args) > 2:
fillchar = evalstring(context, mapping, args[2])
+ if len(fillchar) != 1:
+ # i18n: "pad" is a keyword
+ raise error.ParseError(_("pad() expects a single fill character"))
if len(args) > 3:
left = evalboolean(context, mapping, args[3])
--- a/tests/test-command-template.t Sat Mar 18 20:11:15 2017 +0900
+++ b/tests/test-command-template.t Sat Mar 18 20:38:44 2017 +0900
@@ -3521,6 +3521,15 @@
hg: parse error: pad() expects an integer width
[255]
+Test invalid fillchar passed to pad function
+
+ $ hg log -r 0 -T '{pad(rev, 10, "")}\n'
+ hg: parse error: pad() expects a single fill character
+ [255]
+ $ hg log -r 0 -T '{pad(rev, 10, "--")}\n'
+ hg: parse error: pad() expects a single fill character
+ [255]
+
Test boolean argument passed to pad function
no crash