[PATCH 6 of 6 py3] config: guard against setconfig specifying unicode values on py3

Augie Fackler raf at durin42.com
Tue Mar 7 11:25:20 EST 2017


# HG changeset patch
# User Augie Fackler <raf at durin42.com>
# Date 1488570176 18000
#      Fri Mar 03 14:42:56 2017 -0500
# Node ID 1bd41b5fdf2b19d4c3bf9fc47a81fc3b85cddf79
# Parent  4801067dee2c77ff4e720c931d8b19cf32515beb
config: guard against setconfig specifying unicode values on py3

This was leading to some difficult to trace problems because the
values were set in one place, but then blew up much later in the
program. Exploding violently with an assertion seems reasonable here.

diff --git a/mercurial/config.py b/mercurial/config.py
--- a/mercurial/config.py
+++ b/mercurial/config.py
@@ -13,6 +13,7 @@ import os
 from .i18n import _
 from . import (
     error,
+    pycompat,
     util,
 )
 
@@ -69,6 +70,9 @@ class config(object):
     def items(self, section):
         return self._data.get(section, {}).items()
     def set(self, section, item, value, source=""):
+        if pycompat.ispy3:
+            assert not isinstance(value, str), (
+                'config values may not be unicode strings on Python 3')
         if section not in self:
             self._data[section] = util.sortdict()
         self._data[section][item] = value


More information about the Mercurial-devel mailing list