mercurial/templater.py
changeset 45213 d5ccc059fbcd
parent 45210 4ccd5ec565c2
child 45257 668af67bfd18
--- a/mercurial/templater.py	Wed Jul 22 00:09:17 2020 -0700
+++ b/mercurial/templater.py	Fri Jul 24 11:24:59 2020 -0700
@@ -828,6 +828,8 @@
     def include(rel, abs, remap, sections):
         templatedirs = [base, templatedir()]
         for dir in templatedirs:
+            if dir is None:
+                continue
             abs = os.path.normpath(os.path.join(dir, rel))
             if os.path.isfile(abs):
                 data = util.posixfile(abs, b'rb').read()
@@ -850,13 +852,15 @@
 
         # fallback check in template paths
         if not os.path.exists(path):
-            p2 = util.normpath(os.path.join(templatedir(), val))
-            if os.path.isfile(p2):
-                path = p2
-            else:
-                p3 = util.normpath(os.path.join(p2, b"map"))
-                if os.path.isfile(p3):
-                    path = p3
+            dir = templatedir()
+            if dir is not None:
+                p2 = util.normpath(os.path.join(dir, val))
+                if os.path.isfile(p2):
+                    path = p2
+                else:
+                    p3 = util.normpath(os.path.join(p2, b"map"))
+                    if os.path.isfile(p3):
+                        path = p3
 
         cache, tmap, aliases = _readmapfile(path)
 
@@ -1064,6 +1068,9 @@
 
 def templatepath(name):
     '''return location of template file. returns None if not found.'''
+    dir = templatedir()
+    if dir is None:
+        return None
     f = os.path.join(templatedir(), name)
     if f and os.path.exists(f):
         return f
@@ -1085,22 +1092,23 @@
     if isinstance(styles, bytes):
         styles = [styles]
 
-    for style in styles:
-        # only plain name is allowed to honor template paths
-        if (
-            not style
-            or style in (pycompat.oscurdir, pycompat.ospardir)
-            or pycompat.ossep in style
-            or pycompat.osaltsep
-            and pycompat.osaltsep in style
-        ):
-            continue
-        locations = [os.path.join(style, b'map'), b'map-' + style]
-        locations.append(b'map')
+    if path is not None:
+        for style in styles:
+            # only plain name is allowed to honor template paths
+            if (
+                not style
+                or style in (pycompat.oscurdir, pycompat.ospardir)
+                or pycompat.ossep in style
+                or pycompat.osaltsep
+                and pycompat.osaltsep in style
+            ):
+                continue
+            locations = [os.path.join(style, b'map'), b'map-' + style]
+            locations.append(b'map')
 
-        for location in locations:
-            mapfile = os.path.join(path, location)
-            if os.path.isfile(mapfile):
-                return style, mapfile
+            for location in locations:
+                mapfile = os.path.join(path, location)
+                if os.path.isfile(mapfile):
+                    return style, mapfile
 
     raise RuntimeError(b"No hgweb templates found in %r" % path)