1
0
mirror of https://github.com/django/django.git synced 2025-06-10 05:59:13 +00:00
django/tests/exception_report/test_large_exception.py

52 lines
1.5 KiB
Python

import sys
from django.test import TestCase
from django.test.client import RequestFactory
from django.views.debug import ExceptionReporter
class ExceptionReport(TestCase):
factory = RequestFactory()
def test_large_sizable_object(self):
lg = list(range(50 * 1024 * 1024))
try:
request = self.factory.get("/")
lg["a"]
except TypeError:
exc_type, exc_value, tb = sys.exc_info()
reporter = ExceptionReporter(request, exc_type, exc_value, tb)
d = reporter.get_traceback_data()
vars = d["lastframe"]["vars"]
for k, v in vars:
if k == "lg":
i = v.index("...")
# Check if it has been trimmed
self.assertGreater(i, -1)
# Construct list with elements before trimming
ls = eval(v[:i] + "]")
# Check if length of trimmed list is our limit
self.assertEqual(len(ls), 4096)
break
def test_non_sizable_object(self):
num = 10000000
try:
request = self.factory.get("/")
num["a"]
except TypeError:
exc_type, exc_value, tb = sys.exc_info()
reporter = ExceptionReporter(request, exc_type, exc_value, tb)
d = reporter.get_traceback_data()
vars = d["lastframe"]["vars"]
for k, v in vars:
if k == "a":
self.assertEqual(v, str(num))
break