mirror of
https://github.com/django/django.git
synced 2025-11-07 07:15:35 +00:00
Refs #23919 -- Removed six.PY2/PY3 usage
Thanks Tim Graham for the review.
This commit is contained in:
@@ -1,45 +0,0 @@
|
||||
"""
|
||||
Since this file contains Python 3 specific syntax, it's named without a test_
|
||||
prefix so the test runner won't try to import it. Instead, the test class is
|
||||
imported in test_debug.py, but only on Python 3.
|
||||
|
||||
This filename is also in setup.cfg flake8 exclude since the Python 2 syntax
|
||||
error (raise ... from ...) can't be silenced using NOQA.
|
||||
"""
|
||||
import sys
|
||||
|
||||
from django.test import RequestFactory, TestCase
|
||||
from django.views.debug import ExceptionReporter
|
||||
|
||||
|
||||
class Py3ExceptionReporterTests(TestCase):
|
||||
|
||||
rf = RequestFactory()
|
||||
|
||||
def test_reporting_of_nested_exceptions(self):
|
||||
request = self.rf.get('/test_view/')
|
||||
try:
|
||||
try:
|
||||
raise AttributeError('Top level')
|
||||
except AttributeError as explicit:
|
||||
try:
|
||||
raise ValueError('Second exception') from explicit
|
||||
except ValueError:
|
||||
raise IndexError('Final exception')
|
||||
except Exception:
|
||||
# Custom exception handler, just pass it into ExceptionReporter
|
||||
exc_type, exc_value, tb = sys.exc_info()
|
||||
|
||||
explicit_exc = 'The above exception ({0}) was the direct cause of the following exception:'
|
||||
implicit_exc = 'During handling of the above exception ({0}), another exception occurred:'
|
||||
|
||||
reporter = ExceptionReporter(request, exc_type, exc_value, tb)
|
||||
html = reporter.get_traceback_html()
|
||||
# Both messages are twice on page -- one rendered as html,
|
||||
# one as plain text (for pastebin)
|
||||
self.assertEqual(2, html.count(explicit_exc.format("Top level")))
|
||||
self.assertEqual(2, html.count(implicit_exc.format("Second exception")))
|
||||
|
||||
text = reporter.get_traceback_text()
|
||||
self.assertIn(explicit_exc.format("Top level"), text)
|
||||
self.assertIn(implicit_exc.format("Second exception"), text)
|
||||
@@ -4,7 +4,6 @@ import os
|
||||
import re
|
||||
import sys
|
||||
import tempfile
|
||||
from unittest import skipIf
|
||||
|
||||
from django.conf.urls import url
|
||||
from django.core import mail
|
||||
@@ -30,9 +29,6 @@ from ..views import (
|
||||
sensitive_method_view, sensitive_view,
|
||||
)
|
||||
|
||||
if six.PY3:
|
||||
from .py3_test_debug import Py3ExceptionReporterTests # NOQA
|
||||
|
||||
PY36 = sys.version_info >= (3, 6)
|
||||
|
||||
|
||||
@@ -352,6 +348,34 @@ class ExceptionReporterTests(SimpleTestCase):
|
||||
self.assertIn('<h2>Request information</h2>', html)
|
||||
self.assertNotIn('<p>Request data not supplied</p>', html)
|
||||
|
||||
def test_reporting_of_nested_exceptions(self):
|
||||
request = self.rf.get('/test_view/')
|
||||
try:
|
||||
try:
|
||||
raise AttributeError('Top level')
|
||||
except AttributeError as explicit:
|
||||
try:
|
||||
raise ValueError('Second exception') from explicit
|
||||
except ValueError:
|
||||
raise IndexError('Final exception')
|
||||
except Exception:
|
||||
# Custom exception handler, just pass it into ExceptionReporter
|
||||
exc_type, exc_value, tb = sys.exc_info()
|
||||
|
||||
explicit_exc = 'The above exception ({0}) was the direct cause of the following exception:'
|
||||
implicit_exc = 'During handling of the above exception ({0}), another exception occurred:'
|
||||
|
||||
reporter = ExceptionReporter(request, exc_type, exc_value, tb)
|
||||
html = reporter.get_traceback_html()
|
||||
# Both messages are twice on page -- one rendered as html,
|
||||
# one as plain text (for pastebin)
|
||||
self.assertEqual(2, html.count(explicit_exc.format("Top level")))
|
||||
self.assertEqual(2, html.count(implicit_exc.format("Second exception")))
|
||||
|
||||
text = reporter.get_traceback_text()
|
||||
self.assertIn(explicit_exc.format("Top level"), text)
|
||||
self.assertIn(implicit_exc.format("Second exception"), text)
|
||||
|
||||
def test_request_and_message(self):
|
||||
"A message can be provided in addition to a request"
|
||||
request = self.rf.get('/test_view/')
|
||||
@@ -426,11 +450,10 @@ class ExceptionReporterTests(SimpleTestCase):
|
||||
self.assertEqual(len(html) // 1024 // 128, 0) # still fit in 128Kb
|
||||
self.assertIn('<trimmed %d bytes string>' % (large + repr_of_str_adds,), html)
|
||||
|
||||
@skipIf(six.PY2, 'Bug manifests on PY3 only')
|
||||
def test_unfrozen_importlib(self):
|
||||
"""
|
||||
importlib is not a frozen app, but its loader thinks it's frozen which
|
||||
results in an ImportError on Python 3. Refs #21443.
|
||||
results in an ImportError. Refs #21443.
|
||||
"""
|
||||
try:
|
||||
request = self.rf.get('/test_view/')
|
||||
@@ -478,10 +501,7 @@ class ExceptionReporterTests(SimpleTestCase):
|
||||
An exception report can be generated for requests with 'items' in
|
||||
request GET, POST, FILES, or COOKIES QueryDicts.
|
||||
"""
|
||||
if six.PY3:
|
||||
value = '<td>items</td><td class="code"><pre>'Oops'</pre></td>'
|
||||
else:
|
||||
value = '<td>items</td><td class="code"><pre>u'Oops'</pre></td>'
|
||||
value = '<td>items</td><td class="code"><pre>'Oops'</pre></td>'
|
||||
# GET
|
||||
request = self.rf.get('/test_view/?items=Oops')
|
||||
reporter = ExceptionReporter(request, None, None, None)
|
||||
@@ -597,20 +617,16 @@ class PlainTextReportTests(SimpleTestCase):
|
||||
An exception report can be generated for requests with 'items' in
|
||||
request GET, POST, FILES, or COOKIES QueryDicts.
|
||||
"""
|
||||
if six.PY3:
|
||||
value = "items = 'Oops'"
|
||||
else:
|
||||
value = "items = u'Oops'"
|
||||
# GET
|
||||
request = self.rf.get('/test_view/?items=Oops')
|
||||
reporter = ExceptionReporter(request, None, None, None)
|
||||
text = reporter.get_traceback_text()
|
||||
self.assertIn(value, text)
|
||||
self.assertIn("items = 'Oops'", text)
|
||||
# POST
|
||||
request = self.rf.post('/test_view/', data={'items': 'Oops'})
|
||||
reporter = ExceptionReporter(request, None, None, None)
|
||||
text = reporter.get_traceback_text()
|
||||
self.assertIn(value, text)
|
||||
self.assertIn("items = 'Oops'", text)
|
||||
# FILES
|
||||
fp = six.StringIO('filecontent')
|
||||
request = self.rf.post('/test_view/', data={'name': 'filename', 'items': fp})
|
||||
|
||||
@@ -8,7 +8,6 @@ from django.test import (
|
||||
)
|
||||
from django.test.selenium import SeleniumTestCase
|
||||
from django.urls import reverse
|
||||
from django.utils import six
|
||||
from django.utils._os import upath
|
||||
from django.utils.translation import (
|
||||
LANGUAGE_SESSION_KEY, get_language, override,
|
||||
@@ -193,10 +192,7 @@ class JsI18NTests(SimpleTestCase):
|
||||
for lang_code in ['es', 'fr', 'ru']:
|
||||
with override(lang_code):
|
||||
catalog = gettext.translation('djangojs', locale_dir, [lang_code])
|
||||
if six.PY3:
|
||||
trans_txt = catalog.gettext('this is to be translated')
|
||||
else:
|
||||
trans_txt = catalog.ugettext('this is to be translated')
|
||||
trans_txt = catalog.gettext('this is to be translated')
|
||||
response = self.client.get('/jsi18n/')
|
||||
# response content must include a line like:
|
||||
# "this is to be translated": <value of trans_txt Python variable>
|
||||
|
||||
Reference in New Issue
Block a user