fix defaults handling in apply_argspec

This commit is contained in:
Mike McLean 2017-02-07 17:20:04 +01:00
parent 9e48e440e8
commit bf9e7520f7
2 changed files with 9 additions and 1 deletions

View file

@ -122,7 +122,7 @@ def apply_argspec(argspec, args, kwargs=None):
else:
data[f_varkw][arg] = kwargs[arg]
if f_defaults:
for arg, val in f_defaults:
for arg, val in zip(f_args[-len(f_defaults):], f_defaults):
data.setdefault(arg, val)
for n, arg in enumerate(f_args):
if arg not in data:

View file

@ -64,6 +64,14 @@ class ArgspecCase(unittest.TestCase):
self.assertRaises(koji.ParameterError, koji.tasks.apply_argspec,
argspec, (1,2), {'b':2} )
# with defaults
argspec = (['a', 'b'], None, None, [1,2])
ret = koji.tasks.apply_argspec(argspec, (), {})
self.assertEqual(ret, {'a':1, 'b':2})
argspec = (['a', 'b'], None, None, [2])
ret = koji.tasks.apply_argspec(argspec, (1,), {})
self.assertEqual(ret, {'a':1, 'b':2})
if __name__ == '__main__':
unittest.main()