On Mon, Oct 16, 2017 at 06:53:32PM +0200, Boris Feld wrote: > # HG changeset patch > # User Boris Feld <boris.f...@octobus.net> > # Date 1508168487 -7200 > # Mon Oct 16 17:41:27 2017 +0200 > # Node ID 7a2c3832349499f8b00b9db64e6b87ff644faa9d > # Parent d64632aed1d71fd2750aca29fe09d8a2e86921cd > # EXP-Topic config.register.ready > # Available At https://bitbucket.org/octobus/mercurial-devel/ > # hg pull https://bitbucket.org/octobus/mercurial-devel/ -r > 7a2c38323494 > configitems: adds a developer warning when accessing undeclared configuration
I've queued patches 1-6. This one I'm inclined to wait until the 4.5 cycle, given how annoyingly invasive it's going to be for third parties. Otherwise there's no released-hg transition window for extensions. What do you think? What about others? Durham, I suspect this will be particularly annoying for y'all? > > Now that all known options are declared, we setup a warning to make sure it > will > stay this way. > > We disable the warning in two tests checking other behavior with random > options. > > diff --git a/mercurial/configitems.py b/mercurial/configitems.py > --- a/mercurial/configitems.py > +++ b/mercurial/configitems.py > @@ -247,6 +247,9 @@ > coreconfigitem('devel', 'user.obsmarker', > default=None, > ) > +coreconfigitem('devel', 'warn-config-unknown', > + default=None, > +) > coreconfigitem('diff', 'nodates', > default=False, > ) > diff --git a/mercurial/ui.py b/mercurial/ui.py > --- a/mercurial/ui.py > +++ b/mercurial/ui.py > @@ -477,6 +477,10 @@ > > if item is not None: > alternates.extend(item.alias) > + else: > + msg = ("accessing unregistered config item: '%s.%s'") > + msg %= (section, name) > + self.develwarn(msg, 2, 'warn-config-unknown') > > if default is _unset: > if item is None: > diff --git a/tests/test-devel-warnings.t b/tests/test-devel-warnings.t > --- a/tests/test-devel-warnings.t > +++ b/tests/test-devel-warnings.t > @@ -363,6 +363,8 @@ > > repo.ui.config('test', 'some', 'foo') > > repo.ui.config('test', 'dynamic', 'some-required-default') > > repo.ui.config('test', 'dynamic') > + > repo.ui.config('test', 'unregistered') > + > repo.ui.config('unregistered', 'unregistered') > > EOF > > $ hg --config "extensions.buggyconfig=${TESTTMP}/buggyconfig.py" > buggyconfig > @@ -372,5 +374,7 @@ > devel-warn: specifying a default value for a registered config item: > 'ui.interactive' 'None' at: $TESTTMP/buggyconfig.py:* (cmdbuggyconfig) (glob) > devel-warn: specifying a default value for a registered config item: > 'test.some' 'foo' at: $TESTTMP/buggyconfig.py:* (cmdbuggyconfig) (glob) > devel-warn: config item requires an explicit default value: 'test.dynamic' > at: $TESTTMP/buggyconfig.py:* (cmdbuggyconfig) (glob) > + devel-warn: accessing unregistered config item: 'test.unregistered' at: > $TESTTMP/buggyconfig.py:* (cmdbuggyconfig) (glob) > + devel-warn: accessing unregistered config item: > 'unregistered.unregistered' at: $TESTTMP/buggyconfig.py:* (cmdbuggyconfig) > (glob) > > $ cd .. > diff --git a/tests/test-trusted.py b/tests/test-trusted.py > --- a/tests/test-trusted.py > +++ b/tests/test-trusted.py > @@ -67,6 +67,13 @@ > trusted)) > > u = uimod.ui.load() > + # disable the configuration registration warning > + # > + # the purpose of this test is to check the old behavior, not to validate > the > + # behavior from registered item. so we silent warning related to > unregisted > + # config. > + u.setconfig('devel', 'warn-config-unknown', False, 'test') > + u.setconfig('devel', 'all-warnings', False, 'test') > u.setconfig('ui', 'debug', str(bool(debug))) > u.setconfig('ui', 'report_untrusted', str(bool(report))) > u.readconfig('.hg/hgrc') > @@ -157,6 +164,13 @@ > print() > print("# read trusted, untrusted, new ui, trusted") > u = uimod.ui.load() > +# disable the configuration registration warning > +# > +# the purpose of this test is to check the old behavior, not to validate the > +# behavior from registered item. so we silent warning related to unregisted > +# config. > +u.setconfig('devel', 'warn-config-unknown', False, 'test') > +u.setconfig('devel', 'all-warnings', False, 'test') > u.setconfig('ui', 'debug', 'on') > u.readconfig(filename) > u2 = u.copy() > diff --git a/tests/test-ui-config.py b/tests/test-ui-config.py > --- a/tests/test-ui-config.py > +++ b/tests/test-ui-config.py > @@ -6,6 +6,15 @@ > ) > > testui = uimod.ui.load() > + > +# disable the configuration registration warning > +# > +# the purpose of this test is to check the old behavior, not to validate the > +# behavior from registered item. so we silent warning related to unregisted > +# config. > +testui.setconfig('devel', 'warn-config-unknown', False, 'test') > +testui.setconfig('devel', 'all-warnings', False, 'test') > + > parsed = dispatch._parseconfig(testui, [ > 'values.string=string value', > 'values.bool1=true', > _______________________________________________ > Mercurial-devel mailing list > Mercurial-devel@mercurial-scm.org > https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel