Skip to content

Commit 3f2ff40

Browse files
committed
INTPYTHON-852 Prevent Index system checks from running twice
1 parent 86042ab commit 3f2ff40

File tree

4 files changed

+14
-60
lines changed

4 files changed

+14
-60
lines changed

django_mongodb_backend/__init__.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
check_django_compatability()
88

99
from .aggregates import register_aggregates # noqa: E402
10-
from .checks import register_checks # noqa: E402
1110
from .expressions.builtins import register_expressions # noqa: E402
1211
from .fields import register_fields # noqa: E402
1312
from .functions import register_functions # noqa: E402
@@ -16,7 +15,6 @@
1615
from .query import register_nodes # noqa: E402
1716

1817
register_aggregates()
19-
register_checks()
2018
register_expressions()
2119
register_fields()
2220
register_functions()

django_mongodb_backend/checks.py

Lines changed: 0 additions & 32 deletions
This file was deleted.

docs/releases/6.0.x.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ New features
1515
Bug fixes
1616
---------
1717

18-
- ...
18+
- Prevented ``Index`` system checks from running twice.
1919

2020
Performance improvements
2121
------------------------

tests/indexes_/test_checks.py

Lines changed: 13 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,14 @@
33
from django.core import checks
44
from django.db import connection, models
55
from django.test import TestCase
6-
from django.test.utils import isolate_apps, override_system_checks
6+
from django.test.utils import isolate_apps
77

8-
from django_mongodb_backend.checks import check_indexes
98
from django_mongodb_backend.fields import ArrayField, ObjectIdField
109
from django_mongodb_backend.indexes import SearchIndex, VectorSearchIndex
1110
from django_mongodb_backend.models import EmbeddedModel
1211

1312

14-
@isolate_apps("indexes_", attr_name="apps")
15-
@override_system_checks([check_indexes])
13+
@isolate_apps("indexes_")
1614
@mock.patch.object(connection.features, "supports_atlas_search", False)
1715
class UnsupportedSearchIndexesTests(TestCase):
1816
def test_search_requires_atlas_search_support(self):
@@ -22,9 +20,8 @@ class Article(models.Model):
2220
class Meta:
2321
indexes = [SearchIndex(fields=["title"])]
2422

25-
errors = checks.run_checks(app_configs=self.apps.get_app_configs(), databases={"default"})
2623
self.assertEqual(
27-
errors,
24+
Article.check(databases={"default"}),
2825
[
2926
checks.Warning(
3027
"This MongoDB server does not support SearchIndex.",
@@ -46,9 +43,8 @@ class Article(models.Model):
4643
class Meta:
4744
indexes = [VectorSearchIndex(fields=["title", "vector"], similarities="cosine")]
4845

49-
errors = checks.run_checks(app_configs=self.apps.get_app_configs(), databases={"default"})
5046
self.assertEqual(
51-
errors,
47+
Article.check(databases={"default"}),
5248
[
5349
checks.Warning(
5450
"This MongoDB server does not support VectorSearchIndex.",
@@ -63,8 +59,7 @@ class Meta:
6359
)
6460

6561

66-
@isolate_apps("indexes_", attr_name="apps")
67-
@override_system_checks([check_indexes])
62+
@isolate_apps("indexes_")
6863
@mock.patch.object(connection.features, "supports_atlas_search", True)
6964
class InvalidVectorSearchIndexesTests(TestCase):
7065
def test_requires_size(self):
@@ -74,9 +69,8 @@ class Article(models.Model):
7469
class Meta:
7570
indexes = [VectorSearchIndex(fields=["title_embedded"], similarities="cosine")]
7671

77-
errors = checks.run_checks(app_configs=self.apps.get_app_configs(), databases={"default"})
7872
self.assertEqual(
79-
errors,
73+
Article.check(databases={"default"}),
8074
[
8175
checks.Error(
8276
"VectorSearchIndex requires 'size' on field 'title_embedded'.",
@@ -88,14 +82,13 @@ class Meta:
8882

8983
def test_requires_float_inner_field(self):
9084
class Article(models.Model):
91-
title_embedded = ArrayField(models.CharField(), size=30)
85+
title_embedded = ArrayField(models.CharField(max_length=1), size=30)
9286

9387
class Meta:
9488
indexes = [VectorSearchIndex(fields=["title_embedded"], similarities="cosine")]
9589

96-
errors = checks.run_checks(app_configs=self.apps.get_app_configs(), databases={"default"})
9790
self.assertEqual(
98-
errors,
91+
Article.check(databases={"default"}),
9992
[
10093
checks.Error(
10194
"VectorSearchIndex requires the base field of ArrayField "
@@ -114,9 +107,8 @@ class Article(models.Model):
114107
class Meta:
115108
indexes = [VectorSearchIndex(fields=["data", "vector"], similarities="cosine")]
116109

117-
errors = checks.run_checks(app_configs=self.apps.get_app_configs(), databases={"default"})
118110
self.assertEqual(
119-
errors,
111+
Article.check(databases={"default"}),
120112
[
121113
checks.Error(
122114
"VectorSearchIndex does not support field 'data' (JSONField).",
@@ -139,9 +131,8 @@ class Meta:
139131
)
140132
]
141133

142-
errors = checks.run_checks(app_configs=self.apps.get_app_configs(), databases={"default"})
143134
self.assertEqual(
144-
errors,
135+
Article.check(databases={"default"}),
145136
[
146137
checks.Error(
147138
"VectorSearchIndex requires the same number of similarities "
@@ -160,8 +151,7 @@ class Article(models.Model):
160151
class Meta:
161152
indexes = [VectorSearchIndex(fields=["vector"], similarities="cosine")]
162153

163-
errors = checks.run_checks(app_configs=self.apps.get_app_configs(), databases={"default"})
164-
self.assertEqual(errors, [])
154+
self.assertEqual(Article.check(databases={"default"}), [])
165155

166156
def test_valid_fields(self):
167157
class Data(EmbeddedModel):
@@ -193,8 +183,7 @@ class Meta:
193183
)
194184
]
195185

196-
errors = checks.run_checks(app_configs=self.apps.get_app_configs(), databases={"default"})
197-
self.assertEqual(errors, [])
186+
self.assertEqual(SearchIndexTestModel.check(databases={"default"}), [])
198187

199188
def test_requires_vector_field(self):
200189
class NoSearchVectorModel(models.Model):
@@ -207,9 +196,8 @@ class Meta:
207196
)
208197
]
209198

210-
errors = checks.run_checks(app_configs=self.apps.get_app_configs(), databases={"default"})
211199
self.assertEqual(
212-
errors,
200+
NoSearchVectorModel.check(databases={"default"}),
213201
[
214202
checks.Error(
215203
"VectorSearchIndex requires at least one ArrayField to store vector data.",

0 commit comments

Comments
 (0)