changeset 25562:9452112c8eb0 stable

templater: evaluate arguments passed to diff() appropriately Before this patch, diff() crashed by passing non-string expression because it didn't evaluate arguments at all.
author Yuya Nishihara <yuya@tcha.org>
date Sat, 13 Jun 2015 20:14:22 +0900
parents 50a6c3c55db1
children a69983942fb4 bfe9ed85f27c
files mercurial/templater.py tests/test-command-template.t
diffstat 2 files changed, 8 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/templater.py	Fri Jun 12 14:43:59 2015 -0700
+++ b/mercurial/templater.py	Sat Jun 13 20:14:22 2015 +0900
@@ -248,7 +248,7 @@
 
     def getpatterns(i):
         if i < len(args):
-            s = args[i][1].strip()
+            s = stringify(args[i][0](context, mapping, args[i][1])).strip()
             if s:
                 return [s]
         return []
--- a/tests/test-command-template.t	Fri Jun 12 14:43:59 2015 -0700
+++ b/tests/test-command-template.t	Sat Jun 13 20:14:22 2015 +0900
@@ -2050,6 +2050,13 @@
   @@ -0,0 +1,1 @@
   +third
 
+  $ hg log -r 8 -T "{diff('FOURTH'|lower)}"
+  diff -r 29114dbae42b -r 95c24699272e fourth
+  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/fourth	Wed Jan 01 10:01:00 2020 +0000
+  @@ -0,0 +1,1 @@
+  +second
+
   $ cd ..