py3: move between bytes and unicode when re-raising IOError
IOError is a Python exception, which argument must be a system string.
--- a/mercurial/templater.py Thu Mar 01 06:43:13 2018 -0500
+++ b/mercurial/templater.py Thu Mar 01 06:47:06 2018 -0500
@@ -1537,8 +1537,9 @@
raise TemplateNotFound(_('"%s" not in template map') %
inst.args[0])
except IOError as inst:
- raise IOError(inst.args[0], _('template file %s: %s') %
- (self.map[t][1], inst.args[1]))
+ reason = (_('template file %s: %s')
+ % (self.map[t][1], util.forcebytestr(inst.args[1])))
+ raise IOError(inst.args[0], encoding.strfromlocal(reason))
return self.cache[t]
def render(self, mapping):