[PATCH] py3: encode underlying error message during parse error of %include

Denis Laxalde denis at laxalde.org
Thu Oct 17 10:16:05 UTC 2019


# HG changeset patch
# User Denis Laxalde <denis.laxalde at logilab.fr>
# Date 1571307042 -7200
#      Thu Oct 17 12:10:42 2019 +0200
# Node ID 8974165737bdc8d3553421d98eb23121bb5282a3
# Parent  733d4ffcd6675d457b60bafa9568115daebc0661
py3: encode underlying error message during parse error of %include

diff --git a/mercurial/config.py b/mercurial/config.py
index 36707ba..57fbd1c 100644
--- a/mercurial/config.py
+++ b/mercurial/config.py
@@ -13,6 +13,7 @@ import os
 from .i18n import _
 from .pycompat import getattr
 from . import (
+    encoding,
     error,
     pycompat,
     util,
@@ -173,7 +174,7 @@ class config(object):
                         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
diff --git a/tests/test-hgrc.t b/tests/test-hgrc.t
index 614bbd0..c3dbd83 100644
--- a/tests/test-hgrc.t
+++ b/tests/test-hgrc.t
@@ -49,6 +49,18 @@ Issue1199: Can't use '%' in hgrc (eg url
   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


More information about the Mercurial-devel mailing list