summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2023-01-18 09:46:01 +0100
committerGitHub <noreply@github.com>2023-01-18 09:46:01 +0100
commit3bbe22dafcc69c5ffa79707f5a74eb1faf466e12 (patch)
tree4bec6a7016732be33f2e1cddd80c18478cb2dee9 /tests
parentd54717118360e8679aa2bd0c5a1625f3e84712ba (diff)
Fixed #34233 -- Dropped support for Python 3.8 and 3.9.
Diffstat (limited to 'tests')
-rw-r--r--tests/admin_scripts/tests.py9
-rw-r--r--tests/admin_views/tests.py6
-rw-r--r--tests/admin_widgets/tests.py6
-rw-r--r--tests/db_functions/datetime/test_extract_trunc.py6
-rw-r--r--tests/migrations/test_writer.py6
-rw-r--r--tests/requirements/py3.txt1
-rw-r--r--tests/test_utils/tests.py43
-rw-r--r--tests/timezones/tests.py6
-rw-r--r--tests/utils_tests/test_autoreload.py6
-rw-r--r--tests/utils_tests/test_module_loading.py34
-rw-r--r--tests/utils_tests/test_timezone.py6
11 files changed, 15 insertions, 114 deletions
diff --git a/tests/admin_scripts/tests.py b/tests/admin_scripts/tests.py
index 4149a31e21..51d0498ff7 100644
--- a/tests/admin_scripts/tests.py
+++ b/tests/admin_scripts/tests.py
@@ -32,7 +32,6 @@ from django.db.migrations.recorder import MigrationRecorder
from django.test import LiveServerTestCase, SimpleTestCase, TestCase, override_settings
from django.test.utils import captured_stderr, captured_stdout
from django.urls import path
-from django.utils.version import PY39
from django.views.static import serve
from . import urls
@@ -107,7 +106,7 @@ class AdminScriptTestCase(SimpleTestCase):
paths.append(os.path.dirname(backend_dir))
return paths
- def run_test(self, args, settings_file=None, apps=None, umask=None):
+ def run_test(self, args, settings_file=None, apps=None, umask=-1):
base_dir = os.path.dirname(self.test_dir)
# The base dir for Django's tests is one level up.
tests_dir = os.path.dirname(os.path.dirname(__file__))
@@ -136,12 +135,11 @@ class AdminScriptTestCase(SimpleTestCase):
cwd=self.test_dir,
env=test_environ,
text=True,
- # subprocess.run()'s umask was added in Python 3.9.
- **({"umask": umask} if umask and PY39 else {}),
+ umask=umask,
)
return p.stdout, p.stderr
- def run_django_admin(self, args, settings_file=None, umask=None):
+ def run_django_admin(self, args, settings_file=None, umask=-1):
return self.run_test(["-m", "django", *args], settings_file, umask=umask)
def run_manage(self, args, settings_file=None, manage_py=None):
@@ -2812,7 +2810,6 @@ class StartProject(LiveServerTestCase, AdminScriptTestCase):
sys.platform == "win32",
"Windows only partially supports umasks and chmod.",
)
- @unittest.skipUnless(PY39, "subprocess.run()'s umask was added in Python 3.9.")
def test_honor_umask(self):
_, err = self.run_django_admin(["startproject", "testproject"], umask=0o077)
self.assertNoOutput(err)
diff --git a/tests/admin_views/tests.py b/tests/admin_views/tests.py
index f7764a7f36..86fb9740a5 100644
--- a/tests/admin_views/tests.py
+++ b/tests/admin_views/tests.py
@@ -2,14 +2,10 @@ import datetime
import os
import re
import unittest
+import zoneinfo
from unittest import mock
from urllib.parse import parse_qsl, urljoin, urlparse
-try:
- import zoneinfo
-except ImportError:
- from backports import zoneinfo
-
from django.contrib import admin
from django.contrib.admin import AdminSite, ModelAdmin
from django.contrib.admin.helpers import ACTION_CHECKBOX_NAME
diff --git a/tests/admin_widgets/tests.py b/tests/admin_widgets/tests.py
index 70b1233ef4..4948a60ee0 100644
--- a/tests/admin_widgets/tests.py
+++ b/tests/admin_widgets/tests.py
@@ -1,15 +1,11 @@
import gettext
import os
import re
+import zoneinfo
from datetime import datetime, timedelta
from importlib import import_module
from unittest import skipUnless
-try:
- import zoneinfo
-except ImportError:
- from backports import zoneinfo
-
from django import forms
from django.conf import settings
from django.contrib import admin
diff --git a/tests/db_functions/datetime/test_extract_trunc.py b/tests/db_functions/datetime/test_extract_trunc.py
index 80043fe3f4..29212b6e24 100644
--- a/tests/db_functions/datetime/test_extract_trunc.py
+++ b/tests/db_functions/datetime/test_extract_trunc.py
@@ -1,11 +1,7 @@
+import zoneinfo
from datetime import datetime, timedelta
from datetime import timezone as datetime_timezone
-try:
- import zoneinfo
-except ImportError:
- from backports import zoneinfo
-
from django.conf import settings
from django.db import DataError, OperationalError
from django.db.models import (
diff --git a/tests/migrations/test_writer.py b/tests/migrations/test_writer.py
index 9c026ffb82..0762c43dde 100644
--- a/tests/migrations/test_writer.py
+++ b/tests/migrations/test_writer.py
@@ -8,13 +8,9 @@ import pathlib
import re
import sys
import uuid
+import zoneinfo
from unittest import mock
-try:
- import zoneinfo
-except ImportError:
- from backports import zoneinfo
-
import custom_migration_operations.more_operations
import custom_migration_operations.operations
diff --git a/tests/requirements/py3.txt b/tests/requirements/py3.txt
index 397aaa06b1..3cc35b8c61 100644
--- a/tests/requirements/py3.txt
+++ b/tests/requirements/py3.txt
@@ -1,7 +1,6 @@
aiosmtpd
asgiref >= 3.6.0
argon2-cffi >= 19.2.0
-backports.zoneinfo; python_version < '3.9'
bcrypt
black
docutils
diff --git a/tests/test_utils/tests.py b/tests/test_utils/tests.py
index aa58b47a94..be95f5ec03 100644
--- a/tests/test_utils/tests.py
+++ b/tests/test_utils/tests.py
@@ -1,4 +1,3 @@
-import logging
import os
import unittest
import warnings
@@ -47,7 +46,6 @@ from django.test.utils import (
)
from django.urls import NoReverseMatch, path, reverse, reverse_lazy
from django.utils.deprecation import RemovedInDjango51Warning
-from django.utils.log import DEFAULT_LOGGING
from django.utils.version import PY311
from .models import Car, Person, PossessedCar
@@ -1198,47 +1196,6 @@ class AssertWarnsMessageTests(SimpleTestCase):
func1()
-# TODO: Remove when dropping support for PY39.
-class AssertNoLogsTest(SimpleTestCase):
- @classmethod
- def setUpClass(cls):
- super().setUpClass()
- logging.config.dictConfig(DEFAULT_LOGGING)
- cls.addClassCleanup(logging.config.dictConfig, settings.LOGGING)
-
- def setUp(self):
- self.logger = logging.getLogger("django")
-
- @override_settings(DEBUG=True)
- def test_fails_when_log_emitted(self):
- msg = "Unexpected logs found: ['INFO:django:FAIL!']"
- with self.assertRaisesMessage(AssertionError, msg):
- with self.assertNoLogs("django", "INFO"):
- self.logger.info("FAIL!")
-
- @override_settings(DEBUG=True)
- def test_text_level(self):
- with self.assertNoLogs("django", "INFO"):
- self.logger.debug("DEBUG logs are ignored.")
-
- @override_settings(DEBUG=True)
- def test_int_level(self):
- with self.assertNoLogs("django", logging.INFO):
- self.logger.debug("DEBUG logs are ignored.")
-
- @override_settings(DEBUG=True)
- def test_default_level(self):
- with self.assertNoLogs("django"):
- self.logger.debug("DEBUG logs are ignored.")
-
- @override_settings(DEBUG=True)
- def test_does_not_hide_other_failures(self):
- msg = "1 != 2"
- with self.assertRaisesMessage(AssertionError, msg):
- with self.assertNoLogs("django"):
- self.assertEqual(1, 2)
-
-
class AssertFieldOutputTests(SimpleTestCase):
def test_assert_field_output(self):
error_invalid = ["Enter a valid email address."]
diff --git a/tests/timezones/tests.py b/tests/timezones/tests.py
index 56784db207..e3e2ea431e 100644
--- a/tests/timezones/tests.py
+++ b/tests/timezones/tests.py
@@ -1,15 +1,11 @@
import datetime
import re
import sys
+import zoneinfo
from contextlib import contextmanager
from unittest import SkipTest, skipIf
from xml.dom.minidom import parseString
-try:
- import zoneinfo
-except ImportError:
- from backports import zoneinfo
-
from django.contrib.auth.models import User
from django.core import serializers
from django.db import connection
diff --git a/tests/utils_tests/test_autoreload.py b/tests/utils_tests/test_autoreload.py
index b6286925b7..e33276ba61 100644
--- a/tests/utils_tests/test_autoreload.py
+++ b/tests/utils_tests/test_autoreload.py
@@ -9,16 +9,12 @@ import time
import types
import weakref
import zipfile
+import zoneinfo
from importlib import import_module
from pathlib import Path
from subprocess import CompletedProcess
from unittest import mock, skip, skipIf
-try:
- import zoneinfo
-except ImportError:
- from backports import zoneinfo
-
import django.__main__
from django.apps.registry import Apps
from django.test import SimpleTestCase
diff --git a/tests/utils_tests/test_module_loading.py b/tests/utils_tests/test_module_loading.py
index 736d456d2d..80ada3abd7 100644
--- a/tests/utils_tests/test_module_loading.py
+++ b/tests/utils_tests/test_module_loading.py
@@ -11,7 +11,6 @@ from django.utils.module_loading import (
import_string,
module_has_submodule,
)
-from django.utils.version import PY310
class DefaultLoader(unittest.TestCase):
@@ -205,35 +204,12 @@ class AutodiscoverModulesTestCase(SimpleTestCase):
self.assertEqual(site._registry, {"lorem": "ipsum"})
-if PY310:
+class TestFinder:
+ def __init__(self, *args, **kwargs):
+ self.importer = zipimporter(*args, **kwargs)
- class TestFinder:
- def __init__(self, *args, **kwargs):
- self.importer = zipimporter(*args, **kwargs)
-
- def find_spec(self, path, target=None):
- return self.importer.find_spec(path, target)
-
-else:
-
- class TestFinder:
- def __init__(self, *args, **kwargs):
- self.importer = zipimporter(*args, **kwargs)
-
- def find_module(self, path):
- importer = self.importer.find_module(path)
- if importer is None:
- return
- return TestLoader(importer)
-
- class TestLoader:
- def __init__(self, importer):
- self.importer = importer
-
- def load_module(self, name):
- mod = self.importer.load_module(name)
- mod.__loader__ = self
- return mod
+ def find_spec(self, path, target=None):
+ return self.importer.find_spec(path, target)
class CustomLoader(EggLoader):
diff --git a/tests/utils_tests/test_timezone.py b/tests/utils_tests/test_timezone.py
index 931347ad46..43bb2bc7a3 100644
--- a/tests/utils_tests/test_timezone.py
+++ b/tests/utils_tests/test_timezone.py
@@ -1,11 +1,7 @@
import datetime
+import zoneinfo
from unittest import mock
-try:
- import zoneinfo
-except ImportError:
- from backports import zoneinfo
-
from django.test import SimpleTestCase, override_settings
from django.utils import timezone