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
--- 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 (