From b92ffebb0cdc469baaf1b8f0e72dddb069eb2fb4 Mon Sep 17 00:00:00 2001 From: Mohamed Karam Date: Fri, 26 Aug 2022 15:06:52 +0200 Subject: Fixed #33954 -- Prevented models.DecimalField from accepting NaN, Inf, and -Inf values. --- tests/model_fields/test_decimalfield.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'tests/model_fields') diff --git a/tests/model_fields/test_decimalfield.py b/tests/model_fields/test_decimalfield.py index 912d55af72..88c6878f59 100644 --- a/tests/model_fields/test_decimalfield.py +++ b/tests/model_fields/test_decimalfield.py @@ -67,10 +67,19 @@ class DecimalFieldTests(TestCase): def test_save_nan_invalid(self): msg = "“nan” value must be a decimal number." - with self.assertRaisesMessage(ValidationError, msg): - BigD.objects.create(d=float("nan")) - with self.assertRaisesMessage(ValidationError, msg): - BigD.objects.create(d=math.nan) + for value in [float("nan"), math.nan, "nan"]: + with self.subTest(value), self.assertRaisesMessage(ValidationError, msg): + BigD.objects.create(d=value) + + def test_save_inf_invalid(self): + msg = "“inf” value must be a decimal number." + for value in [float("inf"), math.inf, "inf"]: + with self.subTest(value), self.assertRaisesMessage(ValidationError, msg): + BigD.objects.create(d=value) + msg = "“-inf” value must be a decimal number." + for value in [float("-inf"), -math.inf, "-inf"]: + with self.subTest(value), self.assertRaisesMessage(ValidationError, msg): + BigD.objects.create(d=value) def test_fetch_from_db_without_float_rounding(self): big_decimal = BigD.objects.create(d=Decimal(".100000000000000000000000000005")) -- cgit v1.2.1