# HG changeset patch # User Pierre-Yves David # Date 2021-08-17 11:22:06 # Node ID 7ab7f73a7f0a7360a2394de36898b1af86b96adb # Parent 3712c0ee9e9c1ae41c33cfa1c6853f0ae569ce80 templater: swap `\` with `/` to allow the resource logic to kicks in Without this change our wrapper to the resource logic will fails to details the nesting and try to pass `directory/file` entry to the resource module, leading to a crash. Ideally, we should track down all caller passing `\` instead of `/`, but that is far more intrusive and we would like to have a working pyoxidized version working for 5.9 It will be easy to add a warning to the above code to track down "bad" caller during the 6.0 cycle. This reduce the number of failing test with pyoxidizer from 52 to 23 Differential Revision: https://phab.mercurial-scm.org/D11281 diff --git a/mercurial/templater.py b/mercurial/templater.py --- a/mercurial/templater.py +++ b/mercurial/templater.py @@ -1117,6 +1117,13 @@ def open_template(name, templatepath=Non return f, open(f, mode='rb') # Otherwise try to read it using the resources API + if pycompat.iswindows: + # quick hack to make sure we can process '/' in the code dealing with + # ressource. Ideally we would make sure we use `/` instead of `ossep` + # in the templater code, but that seems a bigger and less certain + # change that we better left for the default branch. + name_paths = name.split(pycompat.ossep) + name = b'/'.join(name_paths) name_parts = name.split(b'/') package_name = b'.'.join([b'mercurial', b'templates'] + name_parts[:-1]) return (