Skip to content

Commit 89396af

Browse files
committed
Merge remote-tracking branch 'upstream/main'
2 parents 661789b + 43933a1 commit 89396af

File tree

5 files changed

+47
-49
lines changed

5 files changed

+47
-49
lines changed

django/db/backends/sqlite3/creation.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,5 +155,3 @@ def setup_worker_connection(self, _worker_id):
155155
# connection.
156156
self.connection.connect()
157157
target_db.close()
158-
if os.environ.get("RUNNING_DJANGOS_TEST_SUITE") == "true":
159-
self.mark_expected_failures_and_skips()

django/db/models/sql/query.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2346,13 +2346,7 @@ def clear_ordering(self, force=False, clear_default=True):
23462346
query (not even the model's default).
23472347
"""
23482348
if not force and (
2349-
self.is_sliced
2350-
or self.distinct_fields
2351-
or self.select_for_update
2352-
or (
2353-
isinstance(self.group_by, tuple)
2354-
and not {*self.order_by, *self.extra_order_by}.issubset(self.group_by)
2355-
)
2349+
self.is_sliced or self.distinct_fields or self.select_for_update
23562350
):
23572351
return
23582352
self.order_by = ()

django/test/runner.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -473,6 +473,11 @@ def _init_worker(
473473
if value := serialized_contents.get(alias):
474474
connection._test_serialized_contents = value
475475
connection.creation.setup_worker_connection(_worker_id)
476+
if (
477+
is_spawn_or_forkserver
478+
and os.environ.get("RUNNING_DJANGOS_TEST_SUITE") == "true"
479+
):
480+
connection.creation.mark_expected_failures_and_skips()
476481

477482
if is_spawn_or_forkserver:
478483
call_command(

tests/admin_scripts/tests.py

Lines changed: 41 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,13 @@
3333
from django.core.management.commands.loaddata import Command as LoaddataCommand
3434
from django.core.management.commands.runserver import Command as RunserverCommand
3535
from django.core.management.commands.testserver import Command as TestserverCommand
36+
from django.core.management.utils import find_formatters
3637
from django.db import ConnectionHandler, connection
3738
from django.db.migrations.recorder import MigrationRecorder
3839
from django.test import LiveServerTestCase, SimpleTestCase, TestCase, override_settings
3940
from django.test.utils import captured_stderr, captured_stdout
4041
from django.urls import path
42+
from django.utils.functional import cached_property
4143
from django.utils.version import PY313, get_docs_version
4244
from django.views.static import serve
4345

@@ -47,8 +49,6 @@
4749

4850
SYSTEM_CHECK_MSG = "System check identified no issues"
4951

50-
HAS_BLACK = shutil.which("black")
51-
5252

5353
class AdminScriptTestCase(SimpleTestCase):
5454
def setUp(self):
@@ -112,7 +112,20 @@ def _ext_backend_paths(self):
112112
paths.append(os.path.dirname(backend_dir))
113113
return paths
114114

115-
def run_test(self, args, settings_file=None, apps=None, umask=-1):
115+
@cached_property
116+
def path_without_formatters(self):
117+
return os.pathsep.join(
118+
[
119+
path_component
120+
for path_component in os.environ.get("PATH", "").split(os.pathsep)
121+
for formatter_path in find_formatters().values()
122+
if os.path.commonpath([path_component, formatter_path]) == os.sep
123+
]
124+
)
125+
126+
def run_test(
127+
self, args, settings_file=None, apps=None, umask=-1, discover_formatters=False
128+
):
116129
base_dir = os.path.dirname(self.test_dir)
117130
# The base dir for Django's tests is one level up.
118131
tests_dir = os.path.dirname(os.path.dirname(__file__))
@@ -134,6 +147,8 @@ def run_test(self, args, settings_file=None, apps=None, umask=-1):
134147
python_path.extend(ext_backend_base_dirs)
135148
test_environ["PYTHONPATH"] = os.pathsep.join(python_path)
136149
test_environ["PYTHONWARNINGS"] = ""
150+
if not discover_formatters:
151+
test_environ["PATH"] = self.path_without_formatters
137152

138153
p = subprocess.run(
139154
[sys.executable, *args],
@@ -145,10 +160,19 @@ def run_test(self, args, settings_file=None, apps=None, umask=-1):
145160
)
146161
return p.stdout, p.stderr
147162

148-
def run_django_admin(self, args, settings_file=None, umask=-1):
149-
return self.run_test(["-m", "django", *args], settings_file, umask=umask)
163+
def run_django_admin(
164+
self, args, settings_file=None, umask=-1, discover_formatters=False
165+
):
166+
return self.run_test(
167+
["-m", "django", *args],
168+
settings_file,
169+
umask=umask,
170+
discover_formatters=discover_formatters,
171+
)
150172

151-
def run_manage(self, args, settings_file=None, manage_py=None):
173+
def run_manage(
174+
self, args, settings_file=None, manage_py=None, discover_formatters=False
175+
):
152176
template_manage_py = (
153177
os.path.join(os.path.dirname(__file__), manage_py)
154178
if manage_py
@@ -167,7 +191,11 @@ def run_manage(self, args, settings_file=None, manage_py=None):
167191
with open(test_manage_py, "w") as fp:
168192
fp.write(manage_py_contents)
169193

170-
return self.run_test(["./manage.py", *args], settings_file)
194+
return self.run_test(
195+
["./manage.py", *args],
196+
settings_file,
197+
discover_formatters=discover_formatters,
198+
)
171199

172200
def assertNoOutput(self, stream):
173201
"Utility assertion: assert that the given stream is empty"
@@ -744,10 +772,7 @@ def test_setup_environ(self):
744772
with open(os.path.join(app_path, "apps.py")) as f:
745773
content = f.read()
746774
self.assertIn("class SettingsTestConfig(AppConfig)", content)
747-
self.assertIn(
748-
'name = "settings_test"' if HAS_BLACK else "name = 'settings_test'",
749-
content,
750-
)
775+
self.assertIn("name = 'settings_test'", content)
751776

752777
def test_setup_environ_custom_template(self):
753778
"""
@@ -772,9 +797,7 @@ def test_startapp_unicode_name(self):
772797
with open(os.path.join(app_path, "apps.py"), encoding="utf8") as f:
773798
content = f.read()
774799
self.assertIn("class こんにちはConfig(AppConfig)", content)
775-
self.assertIn(
776-
'name = "こんにちは"' if HAS_BLACK else "name = 'こんにちは'", content
777-
)
800+
self.assertIn("name = 'こんにちは'", content)
778801

779802
def test_builtin_command(self):
780803
"""
@@ -1936,7 +1959,7 @@ def setUp(self):
19361959
def test_version(self):
19371960
"version is handled as a special case"
19381961
args = ["version"]
1939-
out, err = self.run_manage(args)
1962+
out, err = self.run_manage(args, discover_formatters=True)
19401963
self.assertNoOutput(err)
19411964
self.assertOutput(out, get_version())
19421965

@@ -2689,7 +2712,7 @@ def test_custom_project_template_non_python_files_not_formatted(self):
26892712
args = ["startproject", "--template", template_path, "customtestproject"]
26902713
testproject_dir = os.path.join(self.test_dir, "customtestproject")
26912714

2692-
_, err = self.run_django_admin(args)
2715+
_, err = self.run_django_admin(args, discover_formatters=True)
26932716
self.assertNoOutput(err)
26942717
with open(
26952718
os.path.join(template_path, "additional_dir", "requirements.in")
@@ -2784,7 +2807,7 @@ def serve_template(request, *args, **kwargs):
27842807
f"{self.live_server_url}/user_agent_check/project_template.tgz"
27852808
)
27862809
args = ["startproject", "--template", template_url, "urltestproject"]
2787-
_, err = self.run_django_admin(args)
2810+
_, err = self.run_django_admin(args, discover_formatters=True)
27882811

27892812
self.assertNoOutput(err)
27902813
self.assertIn("Django/%s" % get_version(), user_agent)
@@ -3126,10 +3149,7 @@ def test_template(self):
31263149
with open(os.path.join(app_path, "apps.py")) as f:
31273150
content = f.read()
31283151
self.assertIn("class NewAppConfig(AppConfig)", content)
3129-
self.assertIn(
3130-
'name = "new_app"' if HAS_BLACK else "name = 'new_app'",
3131-
content,
3132-
)
3152+
self.assertIn("name = 'new_app'", content)
31333153

31343154
def test_creates_directory_when_custom_app_destination_missing(self):
31353155
args = [

tests/aggregation_regress/tests.py

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -171,25 +171,6 @@ def assertObjectAttrs(self, obj, **kwargs):
171171
for attr, value in kwargs.items():
172172
self.assertEqual(getattr(obj, attr), value)
173173

174-
def test_count_preserve_group_by(self):
175-
# new release of the same book
176-
Book.objects.create(
177-
isbn="113235613",
178-
name=self.b4.name,
179-
pages=self.b4.pages,
180-
rating=4.0,
181-
price=Decimal("39.69"),
182-
contact=self.a5,
183-
publisher=self.p3,
184-
pubdate=datetime.date(2018, 11, 3),
185-
)
186-
qs = Book.objects.values("contact__name", "publisher__name").annotate(
187-
publications=Count("id")
188-
)
189-
self.assertEqual(qs.count(), Book.objects.count() - 1)
190-
self.assertEqual(qs.order_by("id").count(), Book.objects.count())
191-
self.assertEqual(qs.extra(order_by=["id"]).count(), Book.objects.count())
192-
193174
def test_annotation_with_value(self):
194175
values = (
195176
Book.objects.filter(

0 commit comments

Comments
 (0)