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.
--- a/mercurial/config.py Fri Mar 03 14:43:27 2017 -0500
+++ b/mercurial/config.py Fri Mar 03 14:42:56 2017 -0500
@@ -13,6 +13,7 @@
from .i18n import _
from . import (
error,
+ pycompat,
util,
)
@@ -69,6 +70,9 @@
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