diff options
| author | Adam Johnson <me@adamj.eu> | 2018-09-07 08:33:19 +0100 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2018-09-14 11:59:56 -0400 |
| commit | 245c36d7b6934fb0ca50eed2414253f4793f1ff5 (patch) | |
| tree | 7e1397ca5e0ef8fc10de05a4e5f75421a29d2fa7 /tests/check_framework | |
| parent | d483a5f0dc1089ac5caabed0f9b320434d2df723 (diff) | |
Fixed #29642 -- Added check for arguments of custom error handler views.
Diffstat (limited to 'tests/check_framework')
| -rw-r--r-- | tests/check_framework/test_urls.py | 24 | ||||
| -rw-r--r-- | tests/check_framework/urls/bad_error_handlers.py | 10 | ||||
| -rw-r--r-- | tests/check_framework/urls/good_error_handlers.py | 10 |
3 files changed, 43 insertions, 1 deletions
diff --git a/tests/check_framework/test_urls.py b/tests/check_framework/test_urls.py index aa53af930e..cdc9595731 100644 --- a/tests/check_framework/test_urls.py +++ b/tests/check_framework/test_urls.py @@ -1,5 +1,5 @@ from django.conf import settings -from django.core.checks.messages import Warning +from django.core.checks.messages import Error, Warning from django.core.checks.urls import ( E006, check_url_config, check_url_namespaces_unique, check_url_settings, get_warning_for_invalid_pattern, @@ -165,6 +165,28 @@ class UpdatedToPathTests(SimpleTestCase): self.assertIn(expected_msg, warning.msg) +class CheckCustomErrorHandlersTests(SimpleTestCase): + + @override_settings(ROOT_URLCONF='check_framework.urls.bad_error_handlers') + def test_bad_handlers(self): + result = check_url_config(None) + self.assertEqual(len(result), 4) + for code, num_params, error in zip([400, 403, 404, 500], [2, 2, 2, 1], result): + with self.subTest('handler{}'.format(code)): + self.assertEqual(error, Error( + "The custom handler{} view " + "'check_framework.urls.bad_error_handlers.bad_handler' " + "does not take the correct number of arguments (request{})." + .format(code, ', exception' if num_params == 2 else ''), + id='urls.E007', + )) + + @override_settings(ROOT_URLCONF='check_framework.urls.good_error_handlers') + def test_good_handlers(self): + result = check_url_config(None) + self.assertEqual(result, []) + + class CheckURLSettingsTests(SimpleTestCase): @override_settings(STATIC_URL='a/', MEDIA_URL='b/') diff --git a/tests/check_framework/urls/bad_error_handlers.py b/tests/check_framework/urls/bad_error_handlers.py new file mode 100644 index 0000000000..d639d707df --- /dev/null +++ b/tests/check_framework/urls/bad_error_handlers.py @@ -0,0 +1,10 @@ +urlpatterns = [] + +handler400 = __name__ + '.bad_handler' +handler403 = __name__ + '.bad_handler' +handler404 = __name__ + '.bad_handler' +handler500 = __name__ + '.bad_handler' + + +def bad_handler(): + pass diff --git a/tests/check_framework/urls/good_error_handlers.py b/tests/check_framework/urls/good_error_handlers.py new file mode 100644 index 0000000000..69bea650f7 --- /dev/null +++ b/tests/check_framework/urls/good_error_handlers.py @@ -0,0 +1,10 @@ +urlpatterns = [] + +handler400 = __name__ + '.good_handler' +handler403 = __name__ + '.good_handler' +handler404 = __name__ + '.good_handler' +handler500 = __name__ + '.good_handler' + + +def good_handler(request, exception=None, foo='bar'): + pass |
