mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Fixed #27857 -- Dropped support for Python 3.4.
This commit is contained in:
@@ -1,5 +1,3 @@
|
||||
import unittest
|
||||
|
||||
from django.core.exceptions import ImproperlyConfigured
|
||||
from django.core.handlers.wsgi import WSGIHandler, WSGIRequest, get_script_name
|
||||
from django.core.signals import request_finished, request_started
|
||||
@@ -8,11 +6,6 @@ from django.test import (
|
||||
RequestFactory, SimpleTestCase, TransactionTestCase, override_settings,
|
||||
)
|
||||
|
||||
try:
|
||||
from http import HTTPStatus
|
||||
except ImportError: # Python < 3.5
|
||||
HTTPStatus = None
|
||||
|
||||
|
||||
class HandlerTests(SimpleTestCase):
|
||||
|
||||
@@ -182,7 +175,6 @@ class HandlerRequestTests(SimpleTestCase):
|
||||
environ = RequestFactory().get('/%E2%A8%87%87%A5%E2%A8%A0').environ
|
||||
self.assertIsInstance(environ['PATH_INFO'], str)
|
||||
|
||||
@unittest.skipIf(HTTPStatus is None, 'HTTPStatus only exists on Python 3.5+')
|
||||
def test_handle_accepts_httpstatus_enum_value(self):
|
||||
def start_response(status, headers):
|
||||
start_response.status = status
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
from http import HTTPStatus
|
||||
|
||||
from django.core.exceptions import SuspiciousOperation
|
||||
from django.db import connection, transaction
|
||||
from django.http import HttpResponse, StreamingHttpResponse
|
||||
from django.views.decorators.csrf import csrf_exempt
|
||||
|
||||
try:
|
||||
from http import HTTPStatus
|
||||
except ImportError: # Python < 3.5
|
||||
pass
|
||||
|
||||
|
||||
def regular(request):
|
||||
return HttpResponse(b"regular content")
|
||||
|
||||
@@ -61,10 +61,7 @@ class MailTests(HeadersCheckMixin, SimpleTestCase):
|
||||
|
||||
def iter_attachments():
|
||||
for i in email_message.walk():
|
||||
# Once support for Python<3.5 has been dropped, we can use
|
||||
# i.get_content_disposition() here instead.
|
||||
content_disposition = i.get('content-disposition', '').split(';')[0].lower()
|
||||
if content_disposition == 'attachment':
|
||||
if i.get_content_disposition() == 'attachment':
|
||||
filename = i.get_filename()
|
||||
content = i.get_payload(decode=True)
|
||||
mimetype = i.get_content_type()
|
||||
@@ -1161,8 +1158,8 @@ class FakeSMTPServer(smtpd.SMTPServer, threading.Thread):
|
||||
def __init__(self, *args, **kwargs):
|
||||
threading.Thread.__init__(self)
|
||||
# New kwarg added in Python 3.5; default switching to False in 3.6.
|
||||
if sys.version_info >= (3, 5):
|
||||
kwargs['decode_data'] = True
|
||||
# Setting a value only silences a deprecation warning in Python 3.5.
|
||||
kwargs['decode_data'] = True
|
||||
smtpd.SMTPServer.__init__(self, *args, **kwargs)
|
||||
self._sink = []
|
||||
self.active = False
|
||||
|
||||
@@ -5,7 +5,7 @@ import errno
|
||||
import os
|
||||
import socket
|
||||
import sys
|
||||
from http.client import HTTPConnection
|
||||
from http.client import HTTPConnection, RemoteDisconnected
|
||||
from urllib.error import HTTPError
|
||||
from urllib.parse import urlencode
|
||||
from urllib.request import urlopen
|
||||
@@ -14,11 +14,6 @@ from django.test import LiveServerTestCase, override_settings
|
||||
|
||||
from .models import Person
|
||||
|
||||
try:
|
||||
from http.client import RemoteDisconnected
|
||||
except ImportError: # Python 3.4
|
||||
from http.client import BadStatusLine as RemoteDisconnected
|
||||
|
||||
TEST_ROOT = os.path.dirname(__file__)
|
||||
TEST_SETTINGS = {
|
||||
'MEDIA_URL': '/media/',
|
||||
|
||||
@@ -2,7 +2,6 @@ import base64
|
||||
import os
|
||||
import shutil
|
||||
import string
|
||||
import sys
|
||||
import tempfile
|
||||
import unittest
|
||||
from datetime import timedelta
|
||||
@@ -733,10 +732,9 @@ class SessionMiddlewareTests(TestCase):
|
||||
# A deleted cookie header looks like:
|
||||
# Set-Cookie: sessionid=; expires=Thu, 01-Jan-1970 00:00:00 GMT; Max-Age=0; Path=/
|
||||
self.assertEqual(
|
||||
'Set-Cookie: {}={}; expires=Thu, 01-Jan-1970 00:00:00 GMT; '
|
||||
'Set-Cookie: {}=""; expires=Thu, 01-Jan-1970 00:00:00 GMT; '
|
||||
'Max-Age=0; Path=/'.format(
|
||||
settings.SESSION_COOKIE_NAME,
|
||||
'""' if sys.version_info >= (3, 5) else '',
|
||||
),
|
||||
str(response.cookies[settings.SESSION_COOKIE_NAME])
|
||||
)
|
||||
@@ -763,10 +761,9 @@ class SessionMiddlewareTests(TestCase):
|
||||
# expires=Thu, 01-Jan-1970 00:00:00 GMT; Max-Age=0;
|
||||
# Path=/example/
|
||||
self.assertEqual(
|
||||
'Set-Cookie: {}={}; Domain=.example.local; expires=Thu, '
|
||||
'Set-Cookie: {}=""; Domain=.example.local; expires=Thu, '
|
||||
'01-Jan-1970 00:00:00 GMT; Max-Age=0; Path=/example/'.format(
|
||||
settings.SESSION_COOKIE_NAME,
|
||||
'""' if sys.version_info >= (3, 5) else '',
|
||||
),
|
||||
str(response.cookies[settings.SESSION_COOKIE_NAME])
|
||||
)
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import sys
|
||||
import unittest
|
||||
from io import StringIO
|
||||
|
||||
@@ -94,18 +93,13 @@ class TestDebugSQL(unittest.TestCase):
|
||||
]
|
||||
|
||||
verbose_expected_outputs = [
|
||||
# Output format changed in Python 3.5+
|
||||
x.format('' if sys.version_info < (3, 5) else 'TestDebugSQL.') for x in [
|
||||
'runTest (test_runner.test_debug_sql.{}FailingTest) ... FAIL',
|
||||
'runTest (test_runner.test_debug_sql.{}ErrorTest) ... ERROR',
|
||||
'runTest (test_runner.test_debug_sql.{}PassingTest) ... ok',
|
||||
'runTest (test_runner.test_debug_sql.{}PassingSubTest) ... ok',
|
||||
# If there are errors/failures in subtests but not in test itself,
|
||||
# the status is not written. That behavior comes from Python.
|
||||
'runTest (test_runner.test_debug_sql.{}FailingSubTest) ...',
|
||||
'runTest (test_runner.test_debug_sql.{}ErrorSubTest) ...',
|
||||
]
|
||||
] + [
|
||||
'runTest (test_runner.test_debug_sql.TestDebugSQL.FailingTest) ... FAIL',
|
||||
'runTest (test_runner.test_debug_sql.TestDebugSQL.ErrorTest) ... ERROR',
|
||||
'runTest (test_runner.test_debug_sql.TestDebugSQL.PassingTest) ... ok',
|
||||
# If there are errors/failures in subtests but not in test itself,
|
||||
# the status is not written. That behavior comes from Python.
|
||||
'runTest (test_runner.test_debug_sql.TestDebugSQL.FailingSubTest) ...',
|
||||
'runTest (test_runner.test_debug_sql.TestDebugSQL.ErrorSubTest) ...',
|
||||
('''SELECT COUNT(*) AS "__count" '''
|
||||
'''FROM "test_runner_person" WHERE '''
|
||||
'''"test_runner_person"."first_name" = 'pass';'''),
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import os
|
||||
import sys
|
||||
import unittest
|
||||
from io import StringIO
|
||||
from unittest import mock
|
||||
@@ -684,9 +683,6 @@ class HTMLEqualTests(SimpleTestCase):
|
||||
error_msg = (
|
||||
"First argument is not valid HTML:\n"
|
||||
"('Unexpected end tag `div` (Line 1, Column 6)', (1, 6))"
|
||||
) if sys.version_info >= (3, 5) else (
|
||||
"First argument is not valid HTML:\n"
|
||||
"Unexpected end tag `div` (Line 1, Column 6), at line 1, column 7"
|
||||
)
|
||||
with self.assertRaisesMessage(AssertionError, error_msg):
|
||||
self.assertHTMLEqual('< div></ div>', '<div></div>')
|
||||
|
||||
Reference in New Issue
Block a user