changeset 44063:d201a637c971

py3: encode underlying error message during parse error of %include
author Denis Laxalde <denis.laxalde@logilab.fr>
date Thu, 17 Oct 2019 12:10:42 +0200
parents 8c0fe77f47c5
children 48b9fbfb00b9
files mercurial/config.py tests/test-hgrc.t
diffstat 2 files changed, 14 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/config.py
+++ b/mercurial/config.py
@@ -13,6 +13,7 @@
 from .i18n import _
 from .pycompat import getattr
 from . import (
+    encoding,
     error,
     pycompat,
     util,
@@ -173,7 +174,7 @@
                         if inst.errno != errno.ENOENT:
                             raise error.ParseError(
                                 _(b"cannot include %s (%s)")
-                                % (inc, inst.strerror),
+                                % (inc, encoding.strtolocal(inst.strerror)),
                                 b"%s:%d" % (src, line),
                             )
                 continue
--- a/tests/test-hgrc.t
+++ b/tests/test-hgrc.t
@@ -49,6 +49,18 @@
   paths.default=$TESTTMP/foo%bar
   $ cd ..
 
+Check %include
+
+  $ echo '[section]' > $TESTTMP/included
+  $ echo 'option = value' >> $TESTTMP/included
+  $ echo '%include $TESTTMP/included' >> $HGRC
+  $ hg showconfig section
+  section.option=value
+  $ chmod u-r $TESTTMP/included
+  $ hg showconfig section
+  hg: parse error at $TESTTMP/hgrc:2: cannot include $TESTTMP/included (Permission denied)
+  [255]
+
 issue1829: wrong indentation
 
   $ echo '[foo]' > $HGRC