8000 Ticket 36369 by jrsenthil-kumar2312 · Pull Request #19483 · django/django · GitHub
[go: up one dir, main page]

Skip to content

Ticket 36369 #19483

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Closed
Changes from 1 commit
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
4cc055b
Ticket_3638: Fixed failing test
jrsenthil-kumar2312 May 18, 2025
583a9a1
Fixed #36373 -- Fixed select_related() crash on foreign object for a …
charettes May 8, 2025
0cfec17
Fixed #33174 -- Fixed migrations crash for model inheriting from Gene…
UnknownPlatypus Apr 26, 2025
32e620a
Refs #35591 -- Ensured isolated test environ for runserver warning.
carltongibson May 13, 2025
23ed58f
Fixed #35518 -- Optimized RoutePattern by using string operations for…
RealOrangeOne Jun 10, 2024
7edb039
Fixed #36332 -- Corrected HttpRequest.get_full_path() and HttpRequest…
Kashemir001 Apr 18, 2025
7878088
Updated guidance to propose new feature ideas in contributing docs.
LilyAcorn Apr 27, 2025
b09edd9
Refs #36383, #26151 -- Corrected spelling of DeconstructibleSerializer.
adamchainz May 11, 2025
5695657
Refs #36383 -- Extended DeconstructibleSerializer to support non-iden…
adamchainz May 11, 2025
42d28aa
Refs #36383 -- Added extra tests for serializing functools.partial in…
adamchainz May 12, 2025
000ebb6
Fixed #36383 -- Improved migration serialization for functools.partia…
adamchainz May 11, 2025
38c1af0
Refs #36085 -- Moved compile_json_path to BaseDatabaseOperations.
Hesham942 May 13, 2025
f5c9b54
Fixed #36085 -- Added JSONField support for negative array indexing o…
savanto May 13, 2025
6508c59
Fixed #36273 -- Moved Index system checks from Model to Index.check().
timgraham Apr 20, 2025
bbf7d6b
Fixed #35507 -- Improved accessibility of search and filter elements …
Antoliny0919 Apr 13, 2025
6b00b44
Fixed #35852 -- Fixed intcomma locale-aware formatting of string numb…
tim-mccurrach Apr 26, 2025
3d80110
Refs #35844 -- Skipped argon2-cffi requirement in Windows for Python …
nessita May 14, 2025
bd10f26
Fixed #35829 -- Updated admin icons using Font Awesome Free version 6…
pablobn Dec 10, 2024
89b2201
Fixed incorrect spacing in docs/ref/contrib/postgres/fields.txt.
jacobtylerwalls May 15, 2025
2382deb
Added missing import in docs/ref/contrib/admin/index.txt.
Antoliny0919 May 15, 2025
a8cb6f6
Refs #34488 -- Made test files path resolution independent of current…
timgraham May 15, 2025
7b4e762
Refs #35844 -- Skipped selenium and geoip2 requirement in Windows for…
felixxm May 15, 2025
8dfbcb7
Fixed #33312 -- Raised explicit exception when copying deferred model…
charettes May 6, 2025
8f1dee7
Fixed #36392 -- Raised ValueError when subquery referencing composite…
jacobtylerwalls May 15, 2025
43c8470
Fixed #36348 -- Fixed handling multiple nested url()s in ManifestStat…
sciyoshi Apr 23, 2025
60332ef
Ticket_36369: Added tests for REVERSE_PROPERTIES.
jrsenthil-kumar2312 May 20, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Refs #36383 -- Added extra tests for serializing functools.partial in…
… tests/migrations/test_writer.py.

This includes a test helper to better assert over the expected output.

Co-authored-by: Natalia <124304+nessita@users.noreply.github.com>
  • Loading branch information
2 people authored and jrsenthil-kumar2312 committed May 20, 2025
commit 42d28aad034b0f5a82e3a9e543bb98c6795cbaca
68 changes: 60 additions & 8 deletions tests/migrations/test_writer.py
8000
Original file line number Diff line number Diff line change
Expand Up @@ -300,6 +300,18 @@ def assertSerializedFieldEqual(self, value):
self.assertEqual(value.null, new_value.null)
self.assertEqual(value.unique, new_value.unique)

def assertSerializedFunctoolsPartialEqual(
self, value, expected_string, expected_imports
):
string, imports = MigrationWriter.serialize(value)
self.assertEqual(string, expected_string)
self.assertEqual(imports, expected_imports)
result = self.serialize_round_trip(value)
self.assertEqual(result.func, value.func)
self.assertEqual(result.args, value.args)
self.assertEqual(result.keywords, value.keywords)
return result

def test_serialize_numbers(self):
self.assertSerializedEqual(1)
self.assertSerializedEqual(1.2)
Expand Down Expand Up @@ -895,19 +907,59 @@ def test_serialize_timedelta(self):
self.assertSerializedEqual(datetime.timedelta(minutes=42))

def test_serialize_functools_partial(self):
value = functools.partial(datetime.timedelta)
string, imports = MigrationWriter.serialize(value)
self.assertSerializedFunctoolsPartialEqual(
value,
"functools.partial(datetime.timedelta, *(), **{})",
{"import datetime", "import functools"},
)

def test_serialize_functools_partial_posarg(self):
value = functools.partial(datetime.timedelta, 1)
string, imports = MigrationWriter.serialize(value)
self.assertSerializedFunctoolsPartialEqual(
value,
"functools.partial(datetime.timedelta, *(1,), **{})",
{"import datetime", "import functools"},
)

def test_serialize_functools_partial_kwarg(self):
value = functools.partial(datetime.timedelta, seconds=2)
string, imports = MigrationWriter.serialize(value)
self.assertSerializedFunctoolsPartialEqual(
value,
"functools.partial(datetime.timedelta, *(), **{'seconds': 2})",
{"import datetime", "import functools"},
)

def test_serialize_functools_partial_mixed(self):
value = functools.partial(datetime.timedelta, 1, seconds=2)
result = self.serialize_round_trip(value)
self.assertEqual(result.func, value.func)
self.assertEqual(result.args, value.args)
self.assertEqual(result.keywords, value.keywords)
string, imports = MigrationWriter.serialize(value)
self.assertSerializedFunctoolsPartialEqual(
value,
"functools.partial(datetime.timedelta, *(1,), **{'seconds': 2})",
{"import datetime", "import functools"},
)

def test_serialize_functools_partial_non_identifier_keyword(self):
value = functools.partial(datetime.timedelta, **{"kebab-case": 1})
string, imports = MigrationWriter.serialize(value)
self.assertSerializedFunctoolsPartialEqual(
value,
"functools.partial(datetime.timedelta, *(), **{'kebab-case': 1})",
{"import datetime", "import functools"},
)

def test_serialize_functools_partialmethod(self):
value = functools.partialmethod(datetime.timedelta, 1, seconds=2)
result = self.serialize_round_trip(value)
string, imports = MigrationWriter.serialize(value)
result = self.assertSerializedFunctoolsPartialEqual(
value,
"functools.partialmethod(datetime.timedelta, *(1,), **{'seconds': 2})",
{"import datetime", "import functools"},
)
self.assertIsInstance(result, functools.partialmethod)
self.assertEqual(result.func, value.func)
self.assertEqual(result.args, value.args)
self.assertEqual(result.keywords, value.keywords)

def test_serialize_type_none(self):
self.assertSerializedEqual(NoneType)
Expand Down
0