hgweb: ensure template mapping keys are bytes
authorGregory Szorc <gregory.szorc@gmail.com>
Wed, 23 Jan 2019 17:26:00 -0800
changeset 41325 eff0a7d3229c
parent 41324 3d685ddf6b64
child 41326 7c54357be2ae
hgweb: ensure template mapping keys are bytes Before, str keys were being added in Python 3 because named arguments to dict() use native str for keys. This caused the templater to fail to find the keys since it was looking for bytes versions. This makes a handful of tests pass on Python 3. We may want to consider having the templater validate that keys in mapping dicts are bytes. But I'm unsure whether this is appropriate and won't be doing this. Differential Revision: https://phab.mercurial-scm.org/D5666
mercurial/hgweb/webutil.py
--- a/mercurial/hgweb/webutil.py	Tue Jan 22 18:25:34 2019 -0800
+++ b/mercurial/hgweb/webutil.py	Wed Jan 23 17:26:00 2019 -0800
@@ -456,13 +456,13 @@
     files = listfilediffs(ctx.files(), n, web.maxfiles)
 
     entry = commonentry(repo, ctx)
-    entry.update(
-        allparents=_kwfunc(lambda context, mapping: parents(ctx)),
-        parent=_kwfunc(lambda context, mapping: parents(ctx, rev - 1)),
-        child=_kwfunc(lambda context, mapping: children(ctx, rev + 1)),
-        changelogtag=showtags,
-        files=files,
-    )
+    entry.update({
+        'allparents': _kwfunc(lambda context, mapping: parents(ctx)),
+        'parent': _kwfunc(lambda context, mapping: parents(ctx, rev - 1)),
+        'child': _kwfunc(lambda context, mapping: children(ctx, rev + 1)),
+        'changelogtag': showtags,
+        'files': files,
+    })
     return entry
 
 def changelistentries(web, revs, maxcount, parityfn):