From patchwork Wed Aug 5 22:05:55 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D8901: hgweb: enable reading styles from resources in frozen binaries From: phabricator X-Patchwork-Id: 46999 Message-Id: To: Phabricator Cc: mercurial-devel@mercurial-scm.org Date: Wed, 5 Aug 2020 22:05:55 +0000 martinvonz created this revision. Herald added a reviewer: hg-reviewers. Herald added a subscriber: mercurial-patches. REVISION SUMMARY 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. REPOSITORY rHG Mercurial BRANCH default REVISION DETAIL https://phab.mercurial-scm.org/D8901 AFFECTED FILES mercurial/hgweb/hgweb_mod.py mercurial/hgweb/hgwebdir_mod.py CHANGE DETAILS To: martinvonz, #hg-reviewers Cc: mercurial-patches, mercurial-devel diff --git a/mercurial/hgweb/hgwebdir_mod.py b/mercurial/hgweb/hgwebdir_mod.py --- a/mercurial/hgweb/hgwebdir_mod.py +++ b/mercurial/hgweb/hgwebdir_mod.py @@ -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 + ) diff --git a/mercurial/hgweb/hgweb_mod.py b/mercurial/hgweb/hgweb_mod.py --- a/mercurial/hgweb/hgweb_mod.py +++ b/mercurial/hgweb/hgweb_mod.py @@ -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."""