changeset 47829:7ab7f73a7f0a stable

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
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Tue, 17 Aug 2021 13:22:06 +0200
parents 3712c0ee9e9c
children 981cef5188c3
files mercurial/templater.py
diffstat 1 files changed, 7 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/templater.py	Thu Aug 05 18:38:42 2021 +0200
+++ b/mercurial/templater.py	Tue Aug 17 13:22:06 2021 +0200
@@ -1117,6 +1117,13 @@
         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 (