From 8f6d5d41cdd6c52fbf3844e3fd326c839e28cfa2 Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Nov 09 2017 22:40:52 +0000 Subject: clean up tests --- diff --git a/tests/test_lib/test_argspec.py b/tests/test_lib/test_argspec.py index 8e1ff22..14b536a 100644 --- a/tests/test_lib/test_argspec.py +++ b/tests/test_lib/test_argspec.py @@ -1,77 +1,106 @@ -#!/usr/bin/python - -"""Test argspec functions""" - -import koji.util import unittest +import koji.util -class ArgspecCase(unittest.TestCase): - """Main test case container""" +class TestApplyArgspec(unittest.TestCase): def test_apply_argspec(self): - """Test the parse_NVR method""" - - # Start simple + # Start simple: def func(n) argspec = (['n'], None, None, None) - self.assertRaises(koji.ParameterError, koji.util.apply_argspec, - argspec, (), None ) - self.assertRaises(koji.ParameterError, koji.util.apply_argspec, - argspec, (1,2), None ) + badargs = [ + # [args, kwargs] + [(), None], + [(1, 2), None], + [(1,), {'n': 1}], + [(1,), {'m': 1}], + [(), {'m': 1}], + ] + for args, kwargs in badargs: + with self.assertRaises(koji.ParameterError): + koji.util.apply_argspec(argspec, args, kwargs) + ret = koji.util.apply_argspec(argspec, (1,), None) - self.assertEqual(ret, {'n':1}) - ret = koji.util.apply_argspec(argspec, (), {'n':1}) - self.assertEqual(ret, {'n':1}) - self.assertRaises(koji.ParameterError, koji.util.apply_argspec, - argspec, (1,), {'n':1} ) - self.assertRaises(koji.ParameterError, koji.util.apply_argspec, - argspec, (1,), {'m':1} ) - self.assertRaises(koji.ParameterError, koji.util.apply_argspec, - argspec, (), {'m':1} ) - - # using *args + self.assertEqual(ret, {'n': 1}) + + ret = koji.util.apply_argspec(argspec, (), {'n': 1}) + self.assertEqual(ret, {'n': 1}) + + # Using *args; def func(a, b, *args) argspec = (['a', 'b'], 'args', None, None) - self.assertRaises(koji.ParameterError, koji.util.apply_argspec, - argspec, (), None ) - self.assertRaises(koji.ParameterError, koji.util.apply_argspec, - argspec, (1,), None ) + badargs = [ + [(), None], + [(1,), None], + [(1,2), {'a': 5}], + [(1,2), {'x': 5}], + [(1,), {'b': 2, 'c': 3}], + ] + for args, kwargs in badargs: + with self.assertRaises(koji.ParameterError): + koji.util.apply_argspec(argspec, args, kwargs) + ret = koji.util.apply_argspec(argspec, (1,2), None) self.assertEqual(ret, {'a':1, 'b':2, 'args': ()}) + ret = koji.util.apply_argspec(argspec, (1,2,3), None) self.assertEqual(ret, {'a':1, 'b':2, 'args': (3,)}) - self.assertRaises(koji.ParameterError, koji.util.apply_argspec, - argspec, (1,2), {'a':5} ) - self.assertRaises(koji.ParameterError, koji.util.apply_argspec, - argspec, (1,2), {'x':5} ) + ret = koji.util.apply_argspec(argspec, (1,), {'b':2}) self.assertEqual(ret, {'a':1, 'b':2, 'args': ()}) - self.assertRaises(koji.ParameterError, koji.util.apply_argspec, - argspec, (1,), {'b':2, 'c':3} ) - # using **kwargs + # Using **kwargs: def func(a, b, **kwargs) argspec = (['a', 'b'], None, 'kwargs', None) - self.assertRaises(koji.ParameterError, koji.util.apply_argspec, - argspec, (), None ) - self.assertRaises(koji.ParameterError, koji.util.apply_argspec, - argspec, (), {} ) + badargs = [ + [(), None], + [(), {}], + [(1, 2), {'a': 2}], + [(1, 2), {'b': 2}], + [(1,), {'a': 1, 'b': 2}], + ] + for args, kwargs in badargs: + with self.assertRaises(koji.ParameterError): + koji.util.apply_argspec(argspec, (), None) + ret = koji.util.apply_argspec(argspec, (), {'a':1, 'b':2}) self.assertEqual(ret, {'a':1, 'b':2, 'kwargs':{}}) + ret = koji.util.apply_argspec(argspec, (), {'a':1, 'b':2, 'c':3}) self.assertEqual(ret, {'a':1, 'b':2, 'kwargs':{'c':3}}) + ret = koji.util.apply_argspec(argspec, (1,2), {'c':3}) self.assertEqual(ret, {'a':1, 'b':2, 'kwargs':{'c':3}}) + ret = koji.util.apply_argspec(argspec, (1,), {'b': 2, 'c':3}) self.assertEqual(ret, {'a':1, 'b':2, 'kwargs':{'c':3}}) - self.assertRaises(koji.ParameterError, koji.util.apply_argspec, - argspec, (1,2), {'b':2} ) - # with defaults + # With defaults: def func(a=1, b=2) argspec = (['a', 'b'], None, None, [1,2]) + badargs = [ + [(1,2,3), None], + [(1,2), {'a': 5}], + [(1,2), {'b': 5}], + [(1,2), {'x': 5}], + [(), {'x': 5}], + [(1,), {'b': 2, 'c': 3}], + ] + for args, kwargs in badargs: + with self.assertRaises(koji.ParameterError): + koji.util.apply_argspec(argspec, args, kwargs) + ret = koji.util.apply_argspec(argspec, (), {}) self.assertEqual(ret, {'a':1, 'b':2}) + + # Partial defaults: def func(a, b=2) argspec = (['a', 'b'], None, None, [2]) + badargs = [ + [(1,2,3), None], + [(1,2), {'a': 5}], + [(1,2), {'b': 5}], + [(1,2), {'x': 5}], + [(), {'x': 5}], + [(1,), {'b': 2, 'c': 3}], + ] + for args, kwargs in badargs: + with self.assertRaises(koji.ParameterError): + koji.util.apply_argspec(argspec, args, kwargs) + ret = koji.util.apply_argspec(argspec, (1,), {}) self.assertEqual(ret, {'a':1, 'b':2}) - - -if __name__ == '__main__': - unittest.main()