Mercurial > hg
changeset 28038:72f2a19c5f88 stable
zeroconf: forward all arguments passed to ui.configitems() wrapper
f43988e5954c added 'ignoresub' argument to ui.configitems(), but zeroconf
wrapper wasn't updated. It caused the following crash:
Traceback (most recent call last):
File "bin/hg", line 43, in <module>
mercurial.dispatch.run()
File "lib/python/mercurial/dispatch.py", line 54, in run
sys.exit((dispatch(request(sys.argv[1:])) or 0) & 255)
File "lib/python/mercurial/dispatch.py", line 120, in dispatch
ret = _runcatch(req)
File "lib/python/mercurial/dispatch.py", line 191, in _runcatch
return _dispatch(req)
File "lib/python/mercurial/dispatch.py", line 924, in _dispatch
cmdpats, cmdoptions)
File "lib/python/mercurial/dispatch.py", line 681, in runcommand
ret = _runcommand(ui, options, cmd, d)
File "lib/python/mercurial/extensions.py", line 195, in closure
return func(*(args + a), **kw)
File "lib/python/hgext/zeroconf/__init__.py", line 180, in cleanupafterdispatch
return orig(ui, options, cmd, cmdfunc)
File "lib/python/mercurial/dispatch.py", line 1055, in _runcommand
return checkargs()
File "lib/python/mercurial/dispatch.py", line 1015, in checkargs
return cmdfunc()
File "lib/python/mercurial/dispatch.py", line 921, in <lambda>
d = lambda: util.checksignature(func)(ui, *args, **cmdoptions)
File "lib/python/mercurial/util.py", line 991, in check
return func(*args, **kwargs)
File "lib/python/mercurial/commands.py", line 5405, in paths
pathitems = sorted(ui.paths.iteritems())
File "lib/python/mercurial/util.py", line 723, in __get__
result = self.func(obj)
File "lib/python/mercurial/ui.py", line 619, in paths
return paths(self)
File "lib/python/mercurial/ui.py", line 1099, in __init__
for name, loc in ui.configitems('paths', ignoresub=True):
File "lib/python/mercurial/extensions.py", line 195, in closure
return func(*(args + a), **kw)
TypeError: configitems() got an unexpected keyword argument 'ignoresub'
We have no test coverage for zeroconf, so I've added a minimal test that
could reproduce this problem.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Wed, 10 Feb 2016 22:53:17 +0900 |
parents | 61f4d59e9a0b |
children | 89003c49315c |
files | hgext/zeroconf/__init__.py tests/test-paths.t |
diffstat | 2 files changed, 10 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/zeroconf/__init__.py Fri Feb 05 01:56:46 2016 +0000 +++ b/hgext/zeroconf/__init__.py Wed Feb 10 22:53:17 2016 +0900 @@ -163,8 +163,8 @@ return path return orig(self, section, key, default, untrusted) -def configitems(orig, self, section, untrusted=False): - repos = orig(self, section, untrusted) +def configitems(orig, self, section, *args, **kwargs): + repos = orig(self, section, *args, **kwargs) if section == "paths": repos += getzcpaths() return repos
--- a/tests/test-paths.t Fri Feb 05 01:56:46 2016 +0000 +++ b/tests/test-paths.t Wed Feb 10 22:53:17 2016 +0900 @@ -97,6 +97,14 @@ } ] +zeroconf wraps ui.configitems(), which shouldn't crash at least: + + $ hg paths --config extensions.zeroconf= + dupe = $TESTTMP/b#tip (glob) + dupe:pushurl = https://example.com/dupe + expand = $TESTTMP/a/$SOMETHING/bar (glob) + insecure = http://foo:***@example.com/ + $ cd .. sub-options for an undeclared path are ignored