From ac72a216a7ef95e8e9cb8651b7e67320597c903b Mon Sep 17 00:00:00 2001 From: Adam Johnson Date: Mon, 22 Mar 2021 10:08:35 +0100 Subject: [PATCH] Refs #31372 -- Added django.utils.inspect tests for bound methods. --- tests/utils_tests/test_inspect.py | 33 +++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/tests/utils_tests/test_inspect.py b/tests/utils_tests/test_inspect.py index 013a09a25d..9ea8ae84a4 100644 --- a/tests/utils_tests/test_inspect.py +++ b/tests/utils_tests/test_inspect.py @@ -16,34 +16,63 @@ class Person: def all_kinds(self, name, address='home', age=25, *args, **kwargs): return kwargs + @classmethod + def cls_all_kinds(cls, name, address='home', age=25, *args, **kwargs): + return kwargs + class TestInspectMethods(unittest.TestCase): def test_get_func_full_args_no_arguments(self): self.assertEqual(inspect.get_func_full_args(Person.no_arguments), []) + self.assertEqual(inspect.get_func_full_args(Person().no_arguments), []) def test_get_func_full_args_one_argument(self): self.assertEqual(inspect.get_func_full_args(Person.one_argument), [('something',)]) + self.assertEqual( + inspect.get_func_full_args(Person().one_argument), + [('something',)], + ) - def test_get_func_full_args_all_arguments(self): + def test_get_func_full_args_all_arguments_method(self): arguments = [('name',), ('address', 'home'), ('age', 25), ('*args',), ('**kwargs',)] self.assertEqual(inspect.get_func_full_args(Person.all_kinds), arguments) + self.assertEqual(inspect.get_func_full_args(Person().all_kinds), arguments) + + def test_get_func_full_args_all_arguments_classmethod(self): + arguments = [ + ('name',), ('address', 'home'), ('age', 25), ('*args',), ('**kwargs',), + ] + self.assertEqual(inspect.get_func_full_args(Person.cls_all_kinds), arguments) + self.assertEqual(inspect.get_func_full_args(Person().cls_all_kinds), arguments) def test_func_accepts_var_args_has_var_args(self): self.assertIs(inspect.func_accepts_var_args(Person.just_args), True) + self.assertIs(inspect.func_accepts_var_args(Person().just_args), True) def test_func_accepts_var_args_no_var_args(self): self.assertIs(inspect.func_accepts_var_args(Person.one_argument), False) + self.assertIs(inspect.func_accepts_var_args(Person().one_argument), False) def test_method_has_no_args(self): self.assertIs(inspect.method_has_no_args(Person.no_arguments), True) - self.assertIs(inspect.method_has_no_args(Person.one_argument), False) self.assertIs(inspect.method_has_no_args(Person().no_arguments), True) + self.assertIs(inspect.method_has_no_args(Person.one_argument), False) self.assertIs(inspect.method_has_no_args(Person().one_argument), False) def test_func_supports_parameter(self): self.assertIs(inspect.func_supports_parameter(Person.all_kinds, 'address'), True) + self.assertIs( + inspect.func_supports_parameter(Person().all_kinds, 'address'), + True, + ) self.assertIs(inspect.func_supports_parameter(Person.all_kinds, 'zone'), False) + self.assertIs( + inspect.func_supports_parameter(Person().all_kinds, 'zone'), + False, + ) def test_func_accepts_kwargs(self): self.assertIs(inspect.func_accepts_kwargs(Person.just_args), False) + self.assertIs(inspect.func_accepts_kwargs(Person().just_args), False) self.assertIs(inspect.func_accepts_kwargs(Person.all_kinds), True) + self.assertIs(inspect.func_accepts_kwargs(Person().just_args), False)