Patchwork [4,of,8] templatekw: fix scope of peerpath url bound to generator

login
register
mail settings
Submitter Yuya Nishihara
Date Oct. 6, 2017, 4:05 p.m.
Message ID <3a85ee1cfabde421202e.1507305954@mimosa>
Download mbox | patch
Permalink /patch/24605/
State Accepted
Headers show

Comments

Yuya Nishihara - Oct. 6, 2017, 4:05 p.m.
# HG changeset patch
# User Yuya Nishihara <yuya@tcha.org>
# Date 1505746145 -32400
#      Mon Sep 18 23:49:05 2017 +0900
# Node ID 3a85ee1cfabde421202ea11c482c15bc0c986e5d
# Parent  bedf989f7037ebdd007121a534ba92c91e25e574
templatekw: fix scope of peerpath url bound to generator

I had to explicitly bind 'd' to the generator. Otherwise, the last 'd' would
be used.

Patch

diff --git a/mercurial/templatekw.py b/mercurial/templatekw.py
--- a/mercurial/templatekw.py
+++ b/mercurial/templatekw.py
@@ -663,9 +663,9 @@  def showpeerpaths(repo, **args):
         d = util.sortdict()
         d['url'] = p.rawloc
         d.update((o, v) for o, v in sorted(p.suboptions.iteritems()))
-        def f():
+        def f(d):
             yield d['url']
-        paths[k] = hybriddict(d, gen=f())
+        paths[k] = hybriddict(d, gen=f(d))
 
     # no hybriddict() since d['path'] can't be formatted as a string. perhaps
     # hybriddict() should call templatefilters.stringify(d[value]).
diff --git a/tests/test-paths.t b/tests/test-paths.t
--- a/tests/test-paths.t
+++ b/tests/test-paths.t
@@ -94,10 +94,10 @@  log template:
   dupe=$TESTTMP/b#tip (glob)
   expand=$TESTTMP/a/$SOMETHING/bar (glob)
   $ hg log -rnull -T '{peerpaths % "{name}: {path}\n"}'
-  dupe: $TESTTMP/a/$SOMETHING/bar (glob)
+  dupe: $TESTTMP/b#tip (glob)
   expand: $TESTTMP/a/$SOMETHING/bar (glob)
   $ hg log -rnull -T '{get(peerpaths, "dupe")}\n'
-  $TESTTMP/a/$SOMETHING/bar (glob)
+  $TESTTMP/b#tip (glob)
 
  (but a path is actually a dict of url and sub-options)