dev-python/django: Backport pypy3 test fix

Signed-off-by: Michał Górny <mgorny@gentoo.org>
This commit is contained in:
Michał Górny 2024-08-08 13:21:29 +02:00
parent 73d441ea9f
commit 4c3e67cd33
No known key found for this signature in database
GPG Key ID: 639ADAE2329E240E
4 changed files with 57 additions and 0 deletions

View File

@ -57,6 +57,8 @@ BDEPEND="
PATCHES=(
"${FILESDIR}"/django-4.0-bashcomp.patch
"${WORKDIR}"/django-4.2.8-pypy3.patch
# https://code.djangoproject.com/ticket/35661
"${FILESDIR}"/django-5.1-more-pypy3.patch
)
distutils_enable_sphinx docs --no-autodoc

View File

@ -59,6 +59,8 @@ PATCHES=(
"${WORKDIR}"/django-5.0-pypy3.patch
# https://github.com/django/django/commit/3426a5c33c36266af42128ee9eca4921e68ea876
"${FILESDIR}"/django-5.0.6-py313.patch
# https://code.djangoproject.com/ticket/35661
"${FILESDIR}"/django-5.1-more-pypy3.patch
)
distutils_enable_sphinx docs --no-autodoc

View File

@ -56,6 +56,8 @@ BDEPEND="
PATCHES=(
"${FILESDIR}"/django-4.0-bashcomp.patch
# https://code.djangoproject.com/ticket/35661
"${FILESDIR}"/django-5.1-more-pypy3.patch
)
distutils_enable_sphinx docs --no-autodoc

View File

@ -0,0 +1,51 @@
From d9aeb23edb6cc861360ffbb59a45beccafe55dcb Mon Sep 17 00:00:00 2001
From: Mariusz Felisiak <felisiak.mariusz@gmail.com>
Date: Thu, 8 Aug 2024 08:13:29 +0200
Subject: [PATCH] [5.1.x] Fixed #35661 -- Fixed
test_too_many_digits_to_rander() test crash on PyPy.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Thanks Michał Górny for the report.
Backport of 7fb15ad5bcae05324ee8913e4b2c6c982e8f2de0 from main.
---
.../template_tests/filter_tests/test_floatformat.py | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/tests/template_tests/filter_tests/test_floatformat.py b/tests/template_tests/filter_tests/test_floatformat.py
index 3d6c34a55232..6183f6a0691d 100644
--- a/tests/template_tests/filter_tests/test_floatformat.py
+++ b/tests/template_tests/filter_tests/test_floatformat.py
@@ -4,6 +4,7 @@
from django.test import SimpleTestCase
from django.utils import translation
from django.utils.safestring import mark_safe
+from django.utils.version import PYPY
from ..utils import setup
@@ -181,12 +182,21 @@ def test_too_many_digits_to_render(self):
"-1E10000000000000000",
"1e10000000000000000",
"-1e10000000000000000",
- "1" + "0" * 1_000_000,
]
for value in cases:
with self.subTest(value=value):
self.assertEqual(floatformat(value), value)
+ def test_too_many_digits_to_render_very_long(self):
+ value = "1" + "0" * 1_000_000
+ if PYPY:
+ # PyPy casts decimal parts to int, which reaches the integer string
+ # conversion length limit (default 4300 digits, CVE-2020-10735).
+ with self.assertRaises(ValueError):
+ floatformat(value)
+ else:
+ self.assertEqual(floatformat(value), value)
+
def test_float_dunder_method(self):
class FloatWrapper:
def __init__(self, value):