mirror of
https://github.com/django/django.git
synced 2025-07-27 23:24:14 +00:00
Fixed #32260 -- Made View.as_view() do not use update_wrapper().
View.as_view() should not use update_wrapper() for copying attributes it's unintended and have side-effects such as adding `self` to the signature. This also fixes system check for arguments of custom error handler views with class-based views. Co-authored-by: Nick Pope <nick.pope@flightdataservices.com>
This commit is contained in:
parent
0c0b87725b
commit
7c08f26bf0
7 changed files with 79 additions and 17 deletions
|
@ -167,20 +167,41 @@ class UpdatedToPathTests(SimpleTestCase):
|
|||
|
||||
class CheckCustomErrorHandlersTests(SimpleTestCase):
|
||||
|
||||
@override_settings(ROOT_URLCONF='check_framework.urls.bad_error_handlers')
|
||||
def test_bad_handlers(self):
|
||||
@override_settings(
|
||||
ROOT_URLCONF='check_framework.urls.bad_function_based_error_handlers',
|
||||
)
|
||||
def test_bad_function_based_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' "
|
||||
"The custom handler{} view 'check_framework.urls."
|
||||
"bad_function_based_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.bad_class_based_error_handlers',
|
||||
)
|
||||
def test_bad_class_based_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%s' % code):
|
||||
self.assertEqual(error, Error(
|
||||
"The custom handler%s view 'check_framework.urls."
|
||||
"bad_class_based_error_handlers.HandlerView.as_view."
|
||||
"<locals>.view' does not take the correct number of "
|
||||
"arguments (request%s)." % (
|
||||
code,
|
||||
', exception' if num_params == 2 else '',
|
||||
),
|
||||
id='urls.E007',
|
||||
))
|
||||
|
||||
@override_settings(ROOT_URLCONF='check_framework.urls.bad_error_handlers_invalid_path')
|
||||
def test_bad_handlers_invalid_path(self):
|
||||
result = check_url_config(None)
|
||||
|
@ -204,8 +225,17 @@ class CheckCustomErrorHandlersTests(SimpleTestCase):
|
|||
id='urls.E008',
|
||||
))
|
||||
|
||||
@override_settings(ROOT_URLCONF='check_framework.urls.good_error_handlers')
|
||||
def test_good_handlers(self):
|
||||
@override_settings(
|
||||
ROOT_URLCONF='check_framework.urls.good_function_based_error_handlers',
|
||||
)
|
||||
def test_good_function_based_handlers(self):
|
||||
result = check_url_config(None)
|
||||
self.assertEqual(result, [])
|
||||
|
||||
@override_settings(
|
||||
ROOT_URLCONF='check_framework.urls.good_class_based_error_handlers',
|
||||
)
|
||||
def test_good_class_based_handlers(self):
|
||||
result = check_url_config(None)
|
||||
self.assertEqual(result, [])
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue