django/tests
Adam Johnson 4647e2b866 Refs #36383 -- Extended DeconstructibleSerializer to support non-identifier keyword arguments.
In Python, keyword arguments must normally be valid identifiers (i.e.,
variable names that follow Python's naming rules). However, Python dicts
can have keys that aren't valid identifiers, like "foo-bar" or "123foo".

This commit ensures that keyword arguments that are nt valid
identifiers, are properly handled when deconstructing an object.
2025-05-13 21:42:19 -03:00
..
absolute_url_overrides
admin_autodiscover
admin_changelist Fixed #36217 -- Restored pre_save/post_save signal emission via LogEntry.save() for single-object deletion in the admin. 2025-03-04 10:34:15 +01:00
admin_checks Fixed #36363 -- Added field names to admin duplicated fields error hint. 2025-05-08 11:38:13 +01:00
admin_custom_urls Fixed #33028 -- Used ModelAdmin's opts attribute instead of model._meta. 2022-06-22 07:50:24 +02:00
admin_default_site
admin_docs Captured stderr during admin_docs test. 2025-01-27 09:23:56 +01:00
admin_filters Fixed #35198 -- Fixed facet filters crash on querysets with no primary key. 2024-02-29 10:01:18 +01:00
admin_inlines Fixed #34917 -- Underlined links in the main content area of the admin. 2025-03-27 13:27:33 +01:00
admin_ordering Fixed #9602 -- Added AdminSite.get_model_admin(). 2023-07-07 08:06:01 +02:00
admin_registration Fixed #373 -- Added CompositePrimaryKey. 2024-11-29 11:23:04 +01:00
admin_scripts Refs #35591 -- Ensured isolated test environ for runserver warning. 2025-05-13 12:02:30 +02:00
admin_utils Fixed #35959 -- Displayed password reset button in admin only when user has sufficient permissions. 2025-04-17 12:00:20 -03:00
admin_views Removed hardcoded pks in admin selenium tests. 2025-05-09 13:17:58 +02:00
admin_widgets Removed hardcoded pks in admin selenium tests. 2025-05-09 13:17:58 +02:00
aggregation Fixed aggregation tests crash on databases that don't support JSONFields. 2025-04-27 09:03:35 +02:00
aggregation_regress Applied Black's 2024 stable style. 2024-01-26 12:45:07 +01:00
annotations Fixed #36299 -- Prevented field selection on QuerySet.alias() after values(). 2025-04-05 20:43:50 +02:00
app_loading Used addCleanup() in tests where appropriate. 2023-12-31 10:01:31 +01:00
apps Fixed #34849 -- Avoided raising RuntimeWarning about import-time queries when apps are reinitialized with test tools. 2023-09-25 08:17:03 +02:00
asgi Fixed #36281 -- Used async-safe write in ASGIHandler.read_body(). 2025-05-04 14:53:08 +02:00
async Fixed #35530 -- Deprecated request.user fallback in auth.login and auth.alogin. 2024-11-28 17:43:46 +01:00
auth_tests Fixed #35959 -- Displayed password reset button in admin only when user has sufficient permissions. 2025-04-17 12:00:20 -03:00
backends Fixed #36143 -- Made max_query_params respect SQLITE_LIMIT_VARIABLE_NUMBER. 2025-05-08 11:37:11 +01:00
base
bash_completion Applied Black's 2024 stable style. 2024-01-26 12:45:07 +01:00
basic Removed outdated docstring in tests/basic/models.py. 2025-02-25 15:22:08 +01:00
builtin_server Fixed #33865 -- Optimized LimitedStream wrapper. 2023-01-05 19:26:56 +01:00
bulk_create Refs #36143 -- Tested bulk_batch_size limit for bulk_update and bulk_create. 2025-05-08 11:37:11 +01:00
cache Fixed #32831 -– Allowed cache tests to be retried via a new "retry" decorator. 2024-09-05 18:25:05 -03:00
check_framework Fixed #35656 -- Added an autodetector attribute to the makemigrations and migrate commands. 2024-10-15 16:39:12 +02:00
composite_pk Fixed #36373 -- Fixed select_related() crash on foreign object for a composite pk. 2025-05-12 12:33:07 +01:00
conditional_processing Updated documentation and comments for RFC updates. 2022-11-10 13:52:17 +01:00
constraints Fixed #36198 -- Implemented unresolved transform expression replacement. 2025-03-01 19:57:53 +01:00
contenttypes_tests Fixed #36267 -- Fixed contenttypes shortcut() view crash with an invalid object_id for a UUIDField pk. 2025-04-02 09:33:13 +02:00
context_processors Applied Black's 2024 stable style. 2024-01-26 12:45:07 +01:00
csrf_tests Refs #35727 -- Updated response.content.decode calls to use the HttpResponse.text property. 2024-10-16 11:52:22 +02:00
custom_columns Refs #33990 -- Renamed TransactionTestCase.assertQuerysetEqual() to assertQuerySetEqual(). 2022-10-08 08:07:38 +02:00
custom_lookups Americanized some spellings. 2025-04-16 10:21:38 +02:00
custom_managers Refs #33990 -- Renamed TransactionTestCase.assertQuerysetEqual() to assertQuerySetEqual(). 2022-10-08 08:07:38 +02:00
custom_methods Refs #33990 -- Renamed TransactionTestCase.assertQuerysetEqual() to assertQuerySetEqual(). 2022-10-08 08:07:38 +02:00
custom_migration_operations Fixed #35175 -- Made migraton writer preserve keyword-only arguments. 2024-02-09 09:37:13 +01:00
custom_pk Removed unnecessary trailing commas in tests. 2023-08-22 12:42:57 +02:00
datatypes Refs #36005 -- Used datetime.UTC alias instead of datetime.timezone.utc. 2025-02-18 08:35:36 +01:00
dates Replaced assertQuerysetEqual() to assertSequenceEqual()/assertCountEqual() where appropriate. 2022-10-07 13:05:35 +02:00
datetimes Refs #32365 -- Removed support for pytz timezones per deprecation timeline. 2023-01-17 11:49:15 +01:00
db_functions Refs #36005 -- Used datetime.UTC alias instead of datetime.timezone.utc. 2025-02-18 08:35:36 +01:00
db_typecasts
db_utils Applied Black's 2024 stable style. 2024-01-26 12:45:07 +01:00
dbshell Fixed #18392 -- Changed default mysql encoding to "utf8mb4". 2024-11-18 15:00:33 +01:00
decorators Fixed #35083 -- Updated method_decorator to handle async methods. 2024-08-30 08:54:49 -03:00
defer Fixed #35950 -- Restored refreshing of relations when fields deferred. 2024-12-02 16:01:37 +01:00
defer_regress Fixed #35356 -- Deferred self-referential foreign key fields adequately. 2024-04-23 13:17:17 -03:00
delete Added missing test for QuerySet.delete() when raising EmptyResultSet. 2025-01-02 23:49:49 -03:00
delete_regress Fixed #35073 -- Avoided unnecessary calling of callables used by SET/SET_DEFAULT in Collector.collect(). 2024-02-08 18:41:32 +01:00
deprecation Fixed #35303 -- Implemented async auth backends and utils. 2024-10-07 14:19:41 +02:00
dispatch Fixed #35801 -- Prevented collision of senders with non-overlapping lifetimes. 2025-04-23 13:09:46 +01:00
distinct_on_fields Applied Black's 2024 stable style. 2024-01-26 12:45:07 +01:00
empty
empty_models
expressions Fixed #36198 -- Implemented unresolved transform expression replacement. 2025-03-01 19:57:53 +01:00
expressions_case Refs #33990 -- Renamed TransactionTestCase.assertQuerysetEqual() to assertQuerySetEqual(). 2022-10-08 08:07:38 +02:00
expressions_window Fixed #35444 -- Added generic support for Aggregate.order_by. 2025-03-03 11:37:00 +01:00
extra_regress Fixed #30382 -- Allowed specifying parent classes in force_insert of Model.save(). 2023-06-29 21:52:52 +02:00
field_deconstruction Fixed #36061 -- Added migration support for ManyToManyField.through_fields. 2025-02-06 15:26:12 +01:00
field_defaults Added supports_expression_defaults check in DefaultTests.test_full_clean() test. 2025-04-06 09:40:12 +02:00
field_subclassing
file_storage Refs #36005 -- Used datetime.UTC alias instead of datetime.timezone.utc. 2025-02-18 08:35:36 +01:00
file_uploads Fixed CVE-2024-39330 -- Added extra file name validation in Storage's save method. 2024-07-09 09:21:19 -03:00
files Fixed #36298 -- Truncated the overwritten file content in file_move_safe(). 2025-04-07 16:11:36 +02:00
filtered_relation Fixed #36109 -- Fixed RecursionError when stacking FilteredRelation joins. 2025-01-27 10:32:19 +01:00
fixtures Fixed #36177 -- Added a trailing newline to JSON serializer. (#19232) 2025-03-11 08:01:06 +01:00
fixtures_model_package Refs #33990 -- Renamed TransactionTestCase.assertQuerysetEqual() to assertQuerySetEqual(). 2022-10-08 08:07:38 +02:00
fixtures_regress Fixed #36177 -- Added a trailing newline to JSON serializer. (#19232) 2025-03-11 08:01:06 +01:00
flatpages_tests
force_insert_update Fixed #33579 -- Specialized exception raised on forced update failures. 2025-03-10 21:09:15 +01:00
foreign_object Fixed #36207 -- Cleared cached ForeignObject relations via refresh_from_db(). 2025-05-09 13:01:04 +01:00
forms_tests Fixed #35986 -- Fixed test classes with @translation.override decorator. 2025-04-09 09:49:14 +02:00
from_db_value
generic_inline_admin Refs #34380 -- Changed the URLField default scheme to https and removed FORMS_URLFIELD_ASSUME_HTTPS per deprecation timeline. 2025-01-15 22:28:37 +01:00
generic_relations Fixed #33651 -- Added support for prefetching GenericForeignKey. 2023-09-18 13:23:21 +02:00
generic_relations_regress Fixed #34816 -- Fixed GenericForeignKey crash when checking cache for primary keys with different types. 2023-09-08 08:47:11 +02:00
generic_views Refs #36005 -- Used datetime.UTC alias instead of datetime.timezone.utc. 2025-02-18 08:35:36 +01:00
get_earliest_or_latest Fixed #33772 -- Added QuerySet.first()/last() error message on unordered queryset with aggregation. 2022-06-14 12:24:43 +02:00
get_object_or_404
get_or_create Refs #29499 -- Fixed race condition in update_or_create() test. 2025-01-15 15:36:57 +01:00
gis_tests Refs #36036 -- Removed unsupported 4D GEOS tests. 2025-04-09 22:40:55 -03:00
handlers Refs #33735 -- Adjusted warning stacklevel in StreamingHttpResponse.__iter__()/__aiter__(). 2024-08-28 11:44:05 -03:00
httpwrappers Fixed #35784 -- Added support for preserving the HTTP request method in HttpResponseRedirectBase. 2024-11-14 15:53:49 -03:00
humanize_tests Refs #36005 -- Used datetime.UTC alias instead of datetime.timezone.utc. 2025-02-18 08:35:36 +01:00
i18n Fixed #36010 -- Avoided touching mo files while checking writability. 2025-01-23 11:36:43 +01:00
import_error_package
indexes Fixed #35469 -- Removed deferred SQL to create index removed by AlterField operation. 2024-05-28 12:44:07 +02:00
inline_formsets Fixed #35676 -- Made BaseModelForm validate constraints that reference an InlineForeignKeyField. 2025-03-12 09:16:15 +01:00
inspectdb Refs #36052, #32234 -- Fixed inspectdb tests for CompositePrimaryKey on Oracle. 2025-05-06 08:20:56 +02:00
introspection Refs #35234 -- Deprecated CheckConstraint.check in favor of .condition. 2024-03-01 07:15:32 +01:00
invalid_models_tests Fixed #22977 -- Added system check for clashing managers and reverse related fields. 2025-03-31 22:20:43 +02:00
known_related_objects Fixed #34227 -- Fixed QuerySet.select_related() with multi-level FilteredRelation. 2023-01-24 10:20:27 +01:00
logging_tests Fixed #36138 -- Changed ADMINS and MANAGERS settings to lists of strings. 2025-03-21 10:17:57 +01:00
lookup Fixed #36149 -- Allowed subquery values against tuple exact and in lookups. 2025-02-11 09:08:35 +01:00
m2m_and_m2o Applied Black's 2024 stable style. 2024-01-26 12:45:07 +01:00
m2m_intermediary Applied Black's 2024 stable style. 2024-01-26 12:45:07 +01:00
m2m_multiple Refs #33990 -- Renamed TransactionTestCase.assertQuerysetEqual() to assertQuerySetEqual(). 2022-10-08 08:07:38 +02:00
m2m_recursive
m2m_regress Fixed #33984 -- Reverted "Fixed #32980 -- Made models cache related managers." 2022-09-30 18:18:33 +02:00
m2m_signals
m2m_through Fixed #36197 -- Fixed improper many-to-many count() and exists() for non-pk to_field. 2025-02-18 11:43:27 +01:00
m2m_through_regress Fixed #36177 -- Added a trailing newline to JSON serializer. (#19232) 2025-03-11 08:01:06 +01:00
m2o_recursive
mail Fixed #36309 -- Made email alternatives and attachments pickleable. 2025-04-24 10:11:16 -03:00
managers_regress
many_to_many Refs #33651 -- Removed Prefetch.get_current_queryset() and get_prefetch_queryset() per deprecation timeline. 2025-01-15 22:28:37 +01:00
many_to_one Refs #33651 -- Removed Prefetch.get_current_queryset() and get_prefetch_queryset() per deprecation timeline. 2025-01-15 22:28:37 +01:00
many_to_one_null
max_lengths
messages_tests Fixed #35622 -- Made unittest ignore Django assertions in traceback frames. 2024-08-08 21:34:01 -03:00
middleware Fixed #36138 -- Changed ADMINS and MANAGERS settings to lists of strings. 2025-03-21 10:17:57 +01:00
middleware_exceptions Refs #33476 -- Applied Black's 2023 stable style. 2023-02-01 11:04:38 +01:00
migrate_signals Refs #33476 -- Applied Black's 2023 stable style. 2023-02-01 11:04:38 +01:00
migration_test_data_persistence Fixed #35921 -- Fixed failure when running tests in parallel on postgres. 2024-11-27 12:51:41 +01:00
migrations Refs #36383 -- Extended DeconstructibleSerializer to support non-identifier keyword arguments. 2025-05-13 21:42:19 -03:00
migrations2 Fixed #35122 -- Made migrate --prune option respect --app_label. 2024-02-13 14:47:49 +01:00
model_enums Fixed #36005 -- Dropped support for Python 3.10 and 3.11. 2025-01-20 14:07:28 +01:00
model_fields Fixed #36262 -- Made GeneratedField.db_persist a required key-word argument. 2025-03-25 12:50:24 +01:00
model_forms Americanized some spellings. 2025-04-16 10:21:38 +02:00
model_formsets Fixed #35488 -- Fixed BaseModelFormSet.validate_unique() crash due to unhashable type. 2024-06-13 16:21:53 +02:00
model_formsets_regress Refs #33990 -- Renamed TransactionTestCase.assertQuerysetEqual() to assertQuerySetEqual(). 2022-10-08 08:07:38 +02:00
model_indexes Fixed #33773 -- Made Index with multiple fields respect DEFAULT_INDEX_TABLESPACE. 2022-06-13 07:21:46 +02:00
model_inheritance Fixed #36295, Refs #24305 -- Allowed overriding GenericForeignKey fields on abstract models. 2025-05-08 16:07:08 +01:00
model_inheritance_regress Applied Black's 2024 stable style. 2024-01-26 12:45:07 +01:00
model_meta Fixed #35407 -- Cached model's Options.swapped. 2024-05-07 14:25:51 +02:00
model_options Refs #27236 -- Reverted AlterIndexTogether deprecation. 2022-07-26 11:41:19 +02:00
model_package
model_regress Refs #33990 -- Renamed TransactionTestCase.assertQuerysetEqual() to assertQuerySetEqual(). 2022-10-08 08:07:38 +02:00
model_utils
modeladmin Fixed #36363 -- Added field names to admin duplicated fields error hint. 2025-05-08 11:38:13 +01:00
multiple_database Fixed #36177 -- Added a trailing newline to JSON serializer. (#19232) 2025-03-11 08:01:06 +01:00
mutually_referential
nested_foreign_keys
no_models
null_fk Refs #33990 -- Renamed TransactionTestCase.assertQuerysetEqual() to assertQuerySetEqual(). 2022-10-08 08:07:38 +02:00
null_fk_ordering Applied Black's 2024 stable style. 2024-01-26 12:45:07 +01:00
null_queries
one_to_one Refs #33651 -- Removed Prefetch.get_current_queryset() and get_prefetch_queryset() per deprecation timeline. 2025-01-15 22:28:37 +01:00
or_lookups Refs #33990 -- Renamed TransactionTestCase.assertQuerysetEqual() to assertQuerySetEqual(). 2022-10-08 08:07:38 +02:00
order_with_respect_to Applied Black's 2024 stable style. 2024-01-26 12:45:07 +01:00
ordering Fixed #34372 -- Fixed queryset crash on order by aggregation using OrderBy. 2023-02-27 07:10:19 +01:00
pagination Fixed #35452 -- Deprecated orphans being more than or equal to page_size in pagination. 2025-03-25 12:04:13 +01:00
postgres_tests Americanized some spellings. 2025-04-16 10:21:38 +02:00
prefetch_related Fixed #34819 -- Made GenericForeignKey prefetching use matching pk representations. 2025-03-26 09:55:38 +01:00
project_template
properties
proxy_model_inheritance
proxy_models Fixed #36177 -- Added a trailing newline to JSON serializer. (#19232) 2025-03-11 08:01:06 +01:00
queries Refs #36143 -- Tested bulk_batch_size limit for bulk_update and bulk_create. 2025-05-08 11:37:11 +01:00
queryset_pickle
raw_query Fixed typos in docstrings and docs. 2024-03-07 06:01:01 +01:00
redirects_tests
requests_tests Fixed #36332 -- Corrected HttpRequest.get_full_path() and HttpRequest.get_full_path_info() examples. 2025-05-13 17:41:17 +02:00
requirements Bumped versions in pre-commit and npm configurations. 2025-02-01 08:53:14 +01:00
reserved_names
resolve_url
responses Refs #36005 -- Used datetime.UTC alias instead of datetime.timezone.utc. 2025-02-18 08:35:36 +01:00
reverse_lookup
save_delete_hooks Applied Black's 2024 stable style. 2024-01-26 12:45:07 +01:00
schema Fixed #36156 -- Added supports_json_field check in test_db_default_output_field_resolving test. 2025-04-05 18:54:08 +02:00
select_for_update Fixed #36301 -- Fixed select_for_update(of) crash when using values()/values_list(). 2025-04-07 22:56:40 +02:00
select_related
select_related_onetoone Fixed #34612 -- Fixed QuerySet.only() crash on reverse relationships. 2023-06-01 19:50:47 +01:00
select_related_regress
serializers Fixed #36177 -- Added a trailing newline to JSON serializer. (#19232) 2025-03-11 08:01:06 +01:00
servers Fixed #36177 -- Added a trailing newline to JSON serializer. (#19232) 2025-03-11 08:01:06 +01:00
sessions_tests Fixed #34901 -- Added async-compatible interface to session engines. 2024-03-13 17:55:15 +01:00
settings_tests Used addCleanup() in tests where appropriate. 2023-12-31 10:01:31 +01:00
shell Fixed #36252 -- Handled duplicate automatic imports in the shell command. 2025-03-17 16:29:28 -03:00
shortcuts Fixed #35784 -- Added support for preserving the HTTP request method in HttpResponseRedirectBase. 2024-11-14 15:53:49 -03:00
signals Fixed #35174 -- Fixed Signal.asend()/asend_robust() crash when all receivers are asynchronous. 2024-02-08 11:36:28 +01:00
signed_cookies_tests
signing Refs #33199 -- Removed support for passing positional arguments to Signer/TimestampSigner. 2023-09-18 22:12:40 +02:00
sitemaps_tests Americanized some spellings. 2025-04-16 10:21:38 +02:00
sites_framework Refs #33476 -- Applied Black's 2023 stable style. 2023-02-01 11:04:38 +01:00
sites_tests Used addCleanup() in tests where appropriate. 2023-12-31 10:01:31 +01:00
sphinx Fixed #29942 -- Restored source file linking in docs by using the Sphinx linkcode ext. 2024-05-14 22:08:29 -03:00
staticfiles_tests Refs #36005 -- Used datetime.UTC alias instead of datetime.timezone.utc. 2025-02-18 08:35:36 +01:00
str
string_lookup
swappable_models Refs #33476 -- Applied Black's 2023 stable style. 2023-02-01 11:04:38 +01:00
syndication_tests Fixed #12978 -- Added support for RSS feed stylesheets. 2024-06-18 17:25:43 +02:00
template_backends Fixed #35837 -- Added missing alters_data=True to QuerySet and UserManager methods. 2024-11-01 11:43:49 +01:00
template_loader
template_tests Fixed #36341 -- Preserved whitespaces in wordwrap template filter. 2025-04-23 16:14:03 -03:00
templates
test_client Fixed #35414 -- Used default headers in AsyncRequestFactory. 2025-01-03 08:41:34 +01:00
test_client_regress Fixed a typo in some tests. 2024-11-11 14:47:04 +01:00
test_exceptions
test_runner Refs #35967 -- Deprecated BaseDatabaseCreation.create_test_db(serialize). 2025-02-16 08:43:42 +01:00
test_runner_apps
test_utils Fixed #36005 -- Dropped support for Python 3.10 and 3.11. 2025-01-20 14:07:28 +01:00
timezones Fixed #35986 -- Fixed test classes with @translation.override decorator. 2025-04-09 09:49:14 +02:00
transaction_hooks Fixed #33616 -- Allowed registering callbacks that can fail in transaction.on_commit(). 2022-09-06 12:21:36 +02:00
transactions Applied Black's 2024 stable style. 2024-01-26 12:45:07 +01:00
unmanaged_models Refs #33476 -- Applied Black's 2023 stable style. 2023-02-01 11:04:38 +01:00
update Fixed #36360 -- Fixed QuerySet.update() crash when referring annotations through values(). 2025-04-30 10:38:19 +01:00
update_only_fields Fixed #33579 -- Specialized exception raised on forced update failures. 2025-03-10 21:09:15 +01:00
urlpatterns Fixed #35518 -- Optimized RoutePattern by using string operations for converter-less routes. 2025-05-13 12:05:58 +01:00
urlpatterns_reverse Fixed #25582 -- Added support for query and fragment to django.urls.reverse(). 2024-12-11 16:40:28 -03:00
user_commands Fixed #36056 -- Made OutputWrapper a virtual subclass of TextIOBase. 2025-01-04 00:29:53 -03:00
utils_tests Fixed CVE-2025-32873 -- Mitigated potential DoS in strip_tags(). 2025-05-06 22:21:42 -03:00
validation Fixed #35638 -- Updated validate_constraints to consider db_default. 2024-08-05 17:33:12 +02:00
validators Fixed #36098 -- Fixed validate_ipv6_address()/validate_ipv46_address() crash for non-string values. 2025-01-15 13:46:06 -03:00
version
view_tests Fixed #36138 -- Changed ADMINS and MANAGERS settings to lists of strings. 2025-03-21 10:17:57 +01:00
wsgi Used addCleanup() in tests where appropriate. 2023-12-31 10:01:31 +01:00
xor_lookups Fixed #34604 -- Corrected fallback SQL for n-ary logical XOR. 2023-06-08 20:41:18 +02:00
.coveragerc Fixed #34810 -- Measured test coverage on django-admin commands. 2023-09-07 15:47:26 -03:00
README.rst
runtests.py Fixed #36005 -- Dropped support for Python 3.10 and 3.11. 2025-01-20 14:07:28 +01:00
sitecustomize.py Fixed #34810 -- Measured test coverage on django-admin commands. 2023-09-07 15:47:26 -03:00
test_sqlite.py
urls.py Applied Black's 2024 stable style. 2024-01-26 12:45:07 +01:00

To run the test suite, first, create and activate a virtual environment. Then
install some requirements and run the tests::

    $ cd tests
    $ python -m pip install -e ..
    $ python -m pip install -r requirements/py3.txt
    $ ./runtests.py

For more information about the test suite, see
https://docs.djangoproject.com/en/dev/internals/contributing/writing-code/unit-tests/.