From bf9e7520f70ea2f0002d2e4ca8d99bee08b74524 Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Tue, 7 Feb 2017 17:20:04 +0100 Subject: [PATCH] fix defaults handling in apply_argspec --- koji/tasks.py | 2 +- tests/test_argspec.py | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/koji/tasks.py b/koji/tasks.py index c502033e..0f263e5c 100644 --- a/koji/tasks.py +++ b/koji/tasks.py @@ -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: diff --git a/tests/test_argspec.py b/tests/test_argspec.py index ce7209ac..186209ff 100644 --- a/tests/test_argspec.py +++ b/tests/test_argspec.py @@ -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()