diff --git a/tests/test_fields.py b/tests/test_fields.py index 6fea249ba..92030e3ca 100644 --- a/tests/test_fields.py +++ b/tests/test_fields.py @@ -37,6 +37,9 @@ class TestIsSimpleCallable: def valid_kwargs(self, param='value'): pass + def valid_vargs_kwargs(self, *args, **kwargs): + pass + def invalid(self, param): pass @@ -45,11 +48,13 @@ class TestIsSimpleCallable: # unbound methods assert not is_simple_callable(Foo.valid) assert not is_simple_callable(Foo.valid_kwargs) + assert not is_simple_callable(Foo.valid_vargs_kwargs) assert not is_simple_callable(Foo.invalid) # bound methods assert is_simple_callable(Foo().valid) assert is_simple_callable(Foo().valid_kwargs) + assert is_simple_callable(Foo().valid_vargs_kwargs) assert not is_simple_callable(Foo().invalid) def test_function(self): @@ -59,13 +64,31 @@ class TestIsSimpleCallable: def valid(param='value', param2='value'): pass + def valid_vargs_kwargs(*args, **kwargs): + pass + def invalid(param, param2='value'): pass assert is_simple_callable(simple) assert is_simple_callable(valid) + assert is_simple_callable(valid_vargs_kwargs) assert not is_simple_callable(invalid) + def test_4602_regression(self): + from django.db import models + + class ChoiceModel(models.Model): + choice_field = models.CharField( + max_length=1, default='a', + choices=(('a', 'A'), ('b', 'B')), + ) + + class Meta: + app_label = 'tests' + + assert is_simple_callable(ChoiceModel().get_choice_field_display) + @unittest.skipUnless(typings, 'requires python 3.5') def test_type_annotation(self): # The annotation will otherwise raise a syntax error in python < 3.5