diff options
author | Chris Jerdonek <chris.jerdonek@gmail.com> | 2021-07-28 02:45:32 -0400 |
---|---|---|
committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2021-07-30 09:15:39 +0200 |
commit | 542e74947535b10684e9e396a0d54979e9f70fbf (patch) | |
tree | 6717ca6cf0962677125f506ba29b1954b5833185 /tests/invalid_models_tests | |
parent | 40d3cec22dff8d242384fab02e446932c92ae220 (diff) | |
download | django-542e74947535b10684e9e396a0d54979e9f70fbf.tar.gz |
Fixed #32966 -- Fixed TimeField.check() crash for timezone-aware times in default when USE_TZ = True.
Diffstat (limited to 'tests/invalid_models_tests')
-rw-r--r-- | tests/invalid_models_tests/test_ordinary_fields.py | 32 |
1 files changed, 23 insertions, 9 deletions
diff --git a/tests/invalid_models_tests/test_ordinary_fields.py b/tests/invalid_models_tests/test_ordinary_fields.py index 6eddd853af..7797b24202 100644 --- a/tests/invalid_models_tests/test_ordinary_fields.py +++ b/tests/invalid_models_tests/test_ordinary_fields.py @@ -747,14 +747,16 @@ class TimeFieldTests(SimpleTestCase): class Model(models.Model): field_dt = models.TimeField(default=now()) field_t = models.TimeField(default=now().time()) + # Timezone-aware time object (when USE_TZ=True). + field_tz = models.TimeField(default=now().timetz()) field_now = models.DateField(default=now) - field_dt = Model._meta.get_field('field_dt') - field_t = Model._meta.get_field('field_t') - field_now = Model._meta.get_field('field_now') - errors = field_dt.check() - errors.extend(field_t.check()) - errors.extend(field_now.check()) # doesn't raise a warning + names = ['field_dt', 'field_t', 'field_tz', 'field_now'] + fields = [Model._meta.get_field(name) for name in names] + errors = [] + for field in fields: + errors.extend(field.check()) + self.assertEqual(errors, [ DjangoWarning( 'Fixed default value provided.', @@ -762,7 +764,7 @@ class TimeFieldTests(SimpleTestCase): 'value as default for this field. This may not be ' 'what you want. If you want to have the current date ' 'as default, use `django.utils.timezone.now`', - obj=field_dt, + obj=fields[0], id='fields.W161', ), DjangoWarning( @@ -771,9 +773,21 @@ class TimeFieldTests(SimpleTestCase): 'value as default for this field. This may not be ' 'what you want. If you want to have the current date ' 'as default, use `django.utils.timezone.now`', - obj=field_t, + obj=fields[1], id='fields.W161', - ) + ), + DjangoWarning( + 'Fixed default value provided.', + hint=( + 'It seems you set a fixed date / time / datetime value as ' + 'default for this field. This may not be what you want. ' + 'If you want to have the current date as default, use ' + '`django.utils.timezone.now`' + ), + obj=fields[2], + id='fields.W161', + ), + # field_now doesn't raise a warning. ]) @override_settings(USE_TZ=True) |