Mercurial > hg
changeset 32989:149b68224b08
configitems: issue a devel warning when overriding default config
If the option is registered, there is already a default value available and
passing a new one is at best redundant. So we issue a deprecation warning in
this case.
(note: there will be case were the default value will not be as simple as what
is currently possible. We'll upgrade the configitems code to handle them in
time.)
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Sat, 17 Jun 2017 13:08:03 +0200 |
parents | 2529e2ae9f4c |
children | 1d5d7e2b7ab5 |
files | mercurial/ui.py tests/test-devel-warnings.t |
diffstat | 2 files changed, 26 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/ui.py Sat Jun 17 12:33:59 2017 +0200 +++ b/mercurial/ui.py Sat Jun 17 13:08:03 2017 +0200 @@ -445,11 +445,17 @@ if default is _unset: default = None else: + item = self._knownconfig.get(section, {}).get(name) if default is _unset: default = None - item = self._knownconfig.get(section, {}).get(name) if item is not None: default = item.default + elif item is not None: + msg = ("specifying a default value for a registered " + "config item: '%s.%s' '%s'") + msg %= (section, name, default) + self.develwarn(msg, 1, 'warn-config-default') + alternates = [name] for n in alternates:
--- a/tests/test-devel-warnings.t Sat Jun 17 12:33:59 2017 +0200 +++ b/tests/test-devel-warnings.t Sat Jun 17 13:08:03 2017 +0200 @@ -193,4 +193,23 @@ $ HGEMITWARNINGS= hg nouiwarning +Test warning on config option access and registration + + $ cat << EOF > ${TESTTMP}/buggyconfig.py + > """A small extension that tests our developer warnings for config""" + > + > from mercurial import registrar + > + > cmdtable = {} + > command = registrar.command(cmdtable) + > + > @command('buggyconfig') + > def cmdbuggyconfig(ui, repo): + > repo.ui.config('ui', 'quiet', False) + > repo.ui.config('ui', 'interactive', None) + > EOF + + $ hg --config "extensions.buggyconfig=${TESTTMP}/buggyconfig.py" buggyconfig + devel-warn: specifying a default value for a registered config item: 'ui.quiet' 'False' at: $TESTTMP/buggyconfig.py:* (cmdbuggyconfig) (glob) + $ cd ..