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
--- 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):