Skip to content

Commit 122f401

Browse files
committed
fix(tests): Fix DB names to support tox parallel runner
1 parent 6b0f1f7 commit 122f401

14 files changed

Lines changed: 115 additions & 65 deletions

mongoengine/fields.py

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,14 @@
2424
else:
2525
import dateutil.parser
2626

27+
try:
28+
# Python 3.11+
29+
from datetime import UTC
30+
except ImportError:
31+
# Python ≤ 3.10
32+
from datetime import timezone
33+
UTC = timezone.utc
34+
2735
from mongoengine.base import (
2836
BaseDocument,
2937
BaseField,
@@ -549,15 +557,15 @@ def to_mongo(self, value):
549557
if isinstance(value, datetime.datetime):
550558
# If naive: assume UTC
551559
if value.tzinfo is None:
552-
value = value.replace(tzinfo=datetime.UTC)
560+
value = value.replace(tzinfo=UTC)
553561
else:
554562
# Normalize to UTC
555-
value = value.astimezone(datetime.UTC)
563+
value = value.astimezone(UTC)
556564
return value
557565

558566
# A date without time
559567
if isinstance(value, datetime.date):
560-
value = datetime.datetime(value.year, value.month, value.day, tzinfo=datetime.UTC)
568+
value = datetime.datetime(value.year, value.month, value.day, tzinfo=UTC)
561569
return value
562570

563571
# Strings
@@ -567,9 +575,9 @@ def to_mongo(self, value):
567575
return None
568576
# Force to UTC
569577
if parsed.tzinfo is None:
570-
parsed = parsed.replace(tzinfo=datetime.UTC)
578+
parsed = parsed.replace(tzinfo=UTC)
571579
else:
572-
parsed = parsed.astimezone(datetime.UTC)
580+
parsed = parsed.astimezone(UTC)
573581
return parsed
574582

575583
return None
@@ -673,9 +681,9 @@ def _convert_from_datetime(self, val):
673681
'2011,06,08,20,26,24,092284'
674682
"""
675683
if val.tzinfo is None:
676-
val = val.replace(tzinfo=datetime.UTC)
684+
val = val.replace(tzinfo=UTC)
677685
else:
678-
val = val.astimezone(datetime.UTC)
686+
val = val.astimezone(UTC)
679687
return val.strftime(self.format)
680688

681689
def _convert_from_string(self, data):
@@ -689,7 +697,7 @@ def _convert_from_string(self, data):
689697
datetime.datetime(2011, 6, 8, 20, 26, 24, 92284)
690698
"""
691699
values = [int(d) for d in data.split(self.separator)]
692-
return datetime.datetime(*values, tzinfo=datetime.UTC)
700+
return datetime.datetime(*values, tzinfo=UTC)
693701

694702
def __get__(self, instance, owner):
695703
if instance is None:

tests/asynchronous/fields/test_complex_datetime_field.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,14 @@
88
from mongoengine import *
99
from tests.asynchronous.utils import MongoDBAsyncTestCase
1010

11+
try:
12+
# Python 3.11+
13+
from datetime import UTC
14+
except ImportError:
15+
# Python ≤ 3.10
16+
from datetime import timezone
17+
UTC = timezone.utc
18+
1119

1220
class ComplexDateTimeFieldTest(MongoDBAsyncTestCase):
1321
async def test_complexdatetime_storage(self):
@@ -23,7 +31,7 @@ class LogEntry(Document):
2331

2432
# Post UTC - microseconds are rounded (down) nearest millisecond and
2533
# dropped - with default datetime fields
26-
d1 = datetime.datetime(1970, 1, 1, 0, 0, 1, 999,tzinfo=datetime.UTC)
34+
d1 = datetime.datetime(1970, 1, 1, 0, 0, 1, 999,tzinfo=UTC)
2735
log = LogEntry()
2836
log.date = d1
2937
await log.asave()
@@ -32,15 +40,15 @@ class LogEntry(Document):
3240

3341
# Post UTC - microseconds are rounded (down) nearest millisecond - with
3442
# default datetime fields
35-
d1 = datetime.datetime(1970, 1, 1, 0, 0, 1, 9999,tzinfo=datetime.UTC)
43+
d1 = datetime.datetime(1970, 1, 1, 0, 0, 1, 9999,tzinfo=UTC)
3644
log.date = d1
3745
await log.asave()
3846
await log.areload()
3947
assert log.date == d1
4048

4149
# Pre UTC dates microseconds below 1000 are dropped - with default
4250
# datetime fields
43-
d1 = datetime.datetime(1969, 12, 31, 23, 59, 59, 999,tzinfo=datetime.UTC)
51+
d1 = datetime.datetime(1969, 12, 31, 23, 59, 59, 999,tzinfo=UTC)
4452
log.date = d1
4553
await log.asave()
4654
await log.areload()
@@ -50,7 +58,7 @@ class LogEntry(Document):
5058
# log.date has an invalid microsecond value, so I can't construct
5159
# a date to compare.
5260
for i in range(1001, 3113, 33):
53-
d1 = datetime.datetime(1969, 12, 31, 23, 59, 59, i,tzinfo=datetime.UTC)
61+
d1 = datetime.datetime(1969, 12, 31, 23, 59, 59, i,tzinfo=UTC)
5462
log = LogEntry(
5563
date=d1
5664
)
@@ -164,7 +172,7 @@ class Log(Document):
164172
assert fetched_log.timestamp is None
165173

166174
async def test_default_static_value(self):
167-
NOW = datetime.datetime.now(datetime.UTC)
175+
NOW = datetime.datetime.now(UTC)
168176

169177
class Log(Document):
170178
timestamp = ComplexDateTimeField(default=NOW)
@@ -179,7 +187,7 @@ class Log(Document):
179187
assert fetched_log.timestamp == NOW
180188

181189
async def test_default_callable(self):
182-
NOW = datetime.datetime.now(datetime.UTC)
190+
NOW = datetime.datetime.now(UTC)
183191

184192
class Log(Document):
185193
timestamp = ComplexDateTimeField(default=NOW)

tests/asynchronous/fields/test_datetime_field.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,14 @@
1313
except ImportError:
1414
dateutil = None
1515

16+
try:
17+
# Python 3.11+
18+
from datetime import UTC
19+
except ImportError:
20+
# Python ≤ 3.10
21+
from datetime import timezone
22+
UTC = timezone.utc
23+
1624

1725
class TestDateTimeField(MongoDBAsyncTestCase):
1826
async def test_datetime_from_empty_string(self):
@@ -47,9 +55,9 @@ async def test_default_value_utcnow(self):
4755
"""
4856

4957
class Person(Document):
50-
created = DateTimeField(default=dt.datetime.now(datetime.UTC))
58+
created = DateTimeField(default=dt.datetime.now(UTC))
5159

52-
utcnow = dt.datetime.now(datetime.UTC)
60+
utcnow = dt.datetime.now(UTC)
5361
person = Person()
5462
person.validate()
5563
person_created_t0 = person.created

tests/asynchronous/fields/test_fields.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,14 @@
3535
from mongoengine.errors import DeprecatedError
3636
from tests.asynchronous.utils import MongoDBAsyncTestCase
3737

38+
try:
39+
# Python 3.11+
40+
from datetime import UTC
41+
except ImportError:
42+
# Python ≤ 3.10
43+
from datetime import timezone
44+
UTC = timezone.utc
45+
3846

3947
class TestField(MongoDBAsyncTestCase):
4048
async def test_constructor_set_historical_behavior_is_kept(self):
@@ -200,7 +208,7 @@ class Person(Document):
200208
name = StringField()
201209
age = IntField(default=30, required=False)
202210
userid = StringField(default=lambda: "test", required=True)
203-
created = DateTimeField(default=datetime.datetime.now(datetime.UTC))
211+
created = DateTimeField(default=datetime.datetime.now(UTC))
204212

205213
person = Person()
206214
person.name = None
@@ -369,7 +377,7 @@ class HandleNoneFields(Document):
369377
doc.str_fld = "spam ham egg"
370378
doc.int_fld = 42
371379
doc.flt_fld = 4.2
372-
doc.comp_dt_fld = datetime.datetime.now(datetime.UTC)
380+
doc.comp_dt_fld = datetime.datetime.now(UTC)
373381
await doc.asave()
374382

375383
# Unset all the fields

tests/asynchronous/fields/test_file_field.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
HAS_PIL = False
2121

2222
from tests.asynchronous.utils import MongoDBAsyncTestCase
23+
from tests.utils import MONGO_TEST_DB
24+
2325

2426
require_pil = pytest.mark.skipif(not HAS_PIL, reason="PIL not installed")
2527

@@ -514,7 +516,7 @@ class TestImage(Document):
514516
await t.image.adelete()
515517

516518
async def test_file_multidb(self):
517-
await async_register_connection("test_files", "test_files")
519+
await async_register_connection("test_files", f"{MONGO_TEST_DB}_test_files")
518520

519521
class TestFile(Document):
520522
name = StringField()

tests/asynchronous/queryset/test_queryset.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,13 @@
3030
)
3131
from tests.utils import MONGO_TEST_DB
3232

33+
try:
34+
# Python 3.11+
35+
from datetime import UTC
36+
except ImportError:
37+
# Python ≤ 3.10
38+
from datetime import timezone
39+
UTC = timezone.utc
3340

3441
def get_key_compat(mongo_ver):
3542
ORDER_BY_KEY = "sort"
@@ -1455,7 +1462,7 @@ class BlogPost(Document):
14551462

14561463
await BlogPost.adrop_collection()
14571464
await BlogPost.aobjects.create(
1458-
title="whatever", published_date=datetime.datetime.now(datetime.UTC)
1465+
title="whatever", published_date=datetime.datetime.now(UTC)
14591466
)
14601467

14611468
async with async_db_ops_tracker() as q:

tests/asynchronous/test_connection.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,8 @@ class History2(Document):
8181
name = StringField()
8282
meta = {"db_alias": "db2"}
8383

84-
await async_connect("db1", alias="db1")
85-
await async_connect("db2", alias="db2")
84+
await async_connect(f"{MONGO_TEST_DB}_db1", alias="db1")
85+
await async_connect(f"{MONGO_TEST_DB}_db2", alias="db2")
8686

8787
await History1.adrop_collection()
8888
await History2.adrop_collection()
@@ -104,8 +104,8 @@ class History2(Document):
104104
with pytest.raises(ConnectionFailure):
105105
await History2.aobjects().as_pymongo().to_list()
106106

107-
await async_connect("db1", alias="db1")
108-
await async_connect("db2", alias="db2")
107+
await async_connect(f"{MONGO_TEST_DB}_db1", alias="db1")
108+
await async_connect(f"{MONGO_TEST_DB}_db2", alias="db2")
109109

110110
assert await History1.aobjects().as_pymongo().to_list() == [
111111
{"_id": h.id, "name": "default"}
@@ -125,9 +125,9 @@ class History2(Document):
125125
name = StringField()
126126
meta = {"db_alias": "db2"}
127127

128-
await async_connect()
129-
await async_connect("db1", alias="db1")
130-
await async_connect("db2", alias="db2")
128+
await async_connect(MONGO_TEST_DB)
129+
await async_connect(f"{MONGO_TEST_DB}_db1", alias="db1")
130+
await async_connect(f"{MONGO_TEST_DB}_db2", alias="db2")
131131

132132
await History.adrop_collection()
133133
await History1.adrop_collection()
@@ -137,9 +137,9 @@ class History2(Document):
137137
h1 = await History1(name="db1").asave()
138138
h2 = await History2(name="db2").asave()
139139

140-
assert (await History._aget_collection()).database.name == DEFAULT_DATABASE_NAME
141-
assert (await History1._aget_collection()).database.name == "db1"
142-
assert (await History2._aget_collection()).database.name == "db2"
140+
assert (await History._aget_collection()).database.name == MONGO_TEST_DB
141+
assert (await History1._aget_collection()).database.name == f"{MONGO_TEST_DB}_db1"
142+
assert (await History2._aget_collection()).database.name == f"{MONGO_TEST_DB}_db2"
143143

144144
assert await History.aobjects().as_pymongo().to_list() == [
145145
{"_id": h.id, "name": "default"}
@@ -276,8 +276,8 @@ class History(Document):
276276
@pytest.mark.asyncio
277277
async def test_async_connect_disconnect_works_on_same_document(self):
278278
"""Ensure that the async_connect/async_disconnect works properly with a single Document"""
279-
db1 = "db1"
280-
db2 = "db2"
279+
db1 = f"{MONGO_TEST_DB}_db1"
280+
db2 = f"{MONGO_TEST_DB}_db2"
281281

282282
# Ensure freshness of the 2 databases through pymongo
283283
client = AsyncMongoClient("localhost", 27017)

tests/asynchronous/test_context_managers.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -424,8 +424,8 @@ class A(Document):
424424
assert await A.aobjects.count() == 0
425425

426426
async def test_transaction_updates_across_databases(self):
427-
await async_connect()
428-
await async_connect("test2", "test2")
427+
await async_connect(MONGO_TEST_DB)
428+
await async_connect(f"{MONGO_TEST_DB}_2", "test2")
429429

430430
class A(Document):
431431
name = StringField()
@@ -449,8 +449,8 @@ class B(Document):
449449

450450
@requires_mongodb_gte_44
451451
async def test_collection_creation_via_upserts_across_databases_in_transaction(self):
452-
await async_connect()
453-
await async_connect("test2", "test2")
452+
await async_connect(MONGO_TEST_DB)
453+
await async_connect(f"{MONGO_TEST_DB}_test2", "test2")
454454

455455
class A(Document):
456456
name = StringField()
@@ -482,8 +482,8 @@ class B(Document):
482482
async def test_an_exception_raised_in_transactions_across_databases_rolls_back_updates(
483483
self,
484484
):
485-
await async_connect()
486-
await async_connect("test2", "test2")
485+
await async_connect(MONGO_TEST_DB)
486+
await async_connect(f"{MONGO_TEST_DB}_2", "test2")
487487

488488
class A(Document):
489489
name = StringField()

tests/asynchronous/test_dereference.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ async def asyncSetUp(self):
1515
self.db = await async_connect(db=MONGO_TEST_DB)
1616

1717
async def asyncTearDown(self):
18-
await self.db.drop_database()
18+
await self.db.drop_database(MONGO_TEST_DB)
1919
await async_disconnect_all()
2020
await reset_async_connections()
2121

0 commit comments

Comments
 (0)