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.
--- 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