hgweb: enable reading styles from resources in frozen binaries
All we need to do to read styles from resources is to pass the
file-like object we get from `open_template()` on to `frommapfile()`.
This takes the number of failing tests with PyOxidizer from 62 to 54.
Differential Revision: https://phab.mercurial-scm.org/D8901
--- a/mercurial/hgweb/hgweb_mod.py Wed Aug 05 14:03:45 2020 -0700
+++ b/mercurial/hgweb/hgweb_mod.py Wed Aug 05 14:19:42 2020 -0700
@@ -80,7 +80,7 @@
for location in locations:
mapfile, fp = templater.open_template(location, path)
if mapfile:
- return style, mapfile
+ return style, mapfile, fp
raise RuntimeError(b"No hgweb templates found in %r" % path)
@@ -180,7 +180,9 @@
# figure out which style to use
vars = {}
- styles, (style, mapfile) = getstyle(req, self.config, self.templatepath)
+ styles, (style, mapfile, fp) = getstyle(
+ req, self.config, self.templatepath
+ )
if style == styles[0]:
vars[b'style'] = style
@@ -223,10 +225,9 @@
yield self.config(b'web', b'motd')
tres = formatter.templateresources(self.repo.ui, self.repo)
- tmpl = templater.templater.frommapfile(
- mapfile, filters=filters, defaults=defaults, resources=tres
+ return templater.templater.frommapfile(
+ mapfile, fp=fp, filters=filters, defaults=defaults, resources=tres
)
- return tmpl
def sendtemplate(self, name, **kwargs):
"""Helper function to send a response generated from a template."""
--- a/mercurial/hgweb/hgwebdir_mod.py Wed Aug 05 14:03:45 2020 -0700
+++ b/mercurial/hgweb/hgwebdir_mod.py Wed Aug 05 14:19:42 2020 -0700
@@ -542,7 +542,7 @@
return self.ui.config(*args, **kwargs)
vars = {}
- styles, (style, mapfile) = hgweb_mod.getstyle(
+ styles, (style, mapfile, fp) = hgweb_mod.getstyle(
req, config, self.templatepath
)
if style == styles[0]:
@@ -577,5 +577,6 @@
else:
yield config(b'web', b'motd')
- tmpl = templater.templater.frommapfile(mapfile, defaults=defaults)
- return tmpl
+ return templater.templater.frommapfile(
+ mapfile, fp=fp, defaults=defaults
+ )