django/tests
Timothy Allen 5fe9b7b40a Fixed #28457 -- Updated the design of the 'Congrats' page for new Django projects.
Developed by Timothy Allen and Chad Whitman of The Wharton School with
shepherding from Aymeric Augustin and Collin Anderson.
2017-08-07 10:33:55 -04:00
..
absolute_url_overrides Fixed #26125 -- Fixed E731 flake warnings. 2016-01-25 14:23:43 -05:00
admin_autodiscover
admin_changelist Refs #27953 -- Removed hardcoded uses of Model.__str__() in tests. 2017-06-09 13:28:50 -04:00
admin_checks Improved test coverage of contrib/admin/checks.py. 2017-06-02 18:47:07 -04:00
admin_custom_urls Refs #23919 -- Replaced super(ClassName, self) with super(). 2017-01-25 12:23:46 -05:00
admin_docs Refs #27804 -- Used subTest() in several tests. 2017-05-24 08:36:34 -04:00
admin_filters Fixed #28202 -- Fixed FieldListFilter.get_queryset() crash on invalid input. 2017-06-06 07:54:31 -04:00
admin_inlines Fixed #27967 -- Fixed KeyError in admin's inline form with inherited non-editable pk. 2017-06-12 21:12:54 -04:00
admin_ordering Replaced type-specific assertions with assertEqual(). 2017-03-17 07:51:48 -04:00
admin_registration Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
admin_scripts Fixed #27818 -- Replaced try/except/pass with contextlib.suppress(). 2017-06-28 14:07:55 -04:00
admin_utils Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
admin_views Added tests for PermissionDenied in admin's delete_selected() view. 2017-06-19 16:01:48 -04:00
admin_widgets Refs #27953 -- Removed hardcoded uses of Model.__str__() in tests. 2017-06-09 13:28:50 -04:00
aggregation Refs #24887 -- Stopped mutating a test expression during as_sql(). 2017-07-21 00:23:01 -04:00
aggregation_regress Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
annotations Fixed #28277 -- Added validation of QuerySet.annotate() and aggregate() args. 2017-06-29 18:25:36 +02:00
app_loading Refs #23919 -- Removed django.utils._os.upath()/npath()/abspathu() usage. 2017-01-20 08:01:02 -05:00
apps Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
auth_tests Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
backends Fixed #27818 -- Replaced try/except/pass with contextlib.suppress(). 2017-06-28 14:07:55 -04:00
base Sorted imports per isort 4.2.9. 2017-06-01 13:23:48 -04:00
bash_completion Fixed #27818 -- Replaced try/except/pass with contextlib.suppress(). 2017-06-28 14:07:55 -04:00
basic Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
builtin_server Refs #23919 -- Replaced super(ClassName, self) with super(). 2017-01-25 12:23:46 -05:00
bulk_create Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
cache Refs #27787 -- Corrected or removed invalid call_command() options. 2017-06-16 11:06:01 -04:00
check_framework Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
choices Refs #23919 -- Removed python_2_unicode_compatible decorator usage 2017-01-18 13:44:34 +01:00
conditional_processing Fixed #28104 -- Prevented condition decorator from setting ETag/Last-Modified headers for non-safe requests. 2017-06-06 15:37:14 -04:00
contenttypes_tests Fixed #28313 -- Added model name max length check of 100 characters in contrib.contentttypes. 2017-06-26 18:12:35 -04:00
context_processors Added multi_db=True to test cases that access the 'other' db connection. 2017-02-10 08:19:32 -05:00
csrf_tests Refs #23919 -- Assumed request COOKIES and META are str 2017-01-30 14:13:29 +01:00
custom_columns Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
custom_lookups Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
custom_managers Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
custom_methods Refs #23919 -- Removed python_2_unicode_compatible decorator usage 2017-01-18 13:44:34 +01:00
custom_migration_operations
custom_pk Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
datatypes Refs #23919, #27778 -- Removed obsolete mentions of unicode. 2017-01-26 08:19:27 -05:00
dates Refs #23919 -- Removed python_2_unicode_compatible decorator usage 2017-01-18 13:44:34 +01:00
datetimes Refs #23919 -- Removed python_2_unicode_compatible decorator usage 2017-01-18 13:44:34 +01:00
db_functions Fixed #28371 -- Fixed Cast() with CharField if the max_length argument isn't provided. 2017-07-27 19:36:47 +02:00
db_typecasts Refs #27804 -- Used subTest() in several tests. 2017-05-24 08:36:34 -04:00
db_utils Reorganized backends tests. 2017-06-21 12:00:47 -04:00
dbshell Fixed #28322 -- Added dbshell support for MySQL client TLS certs. 2017-06-19 18:11:25 -04:00
decorators Fixed spelling of "nonexistent". 2017-02-03 08:01:45 -05:00
defer Refs #23919 -- Replaced super(ClassName, self) with super(). 2017-01-25 12:23:46 -05:00
defer_regress Decreased max_length for char fields unless absolutely needed. (#8485) 2017-05-10 17:33:46 +02:00
delete Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
delete_regress Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
deprecation Refs #23919 -- Replaced super(ClassName, self) with super(). 2017-01-25 12:23:46 -05:00
dispatch Refs #23919 -- Stopped inheriting from object to define new style classes. 2017-01-19 08:39:46 +01:00
distinct_on_fields Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
empty
expressions Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
expressions_case Refs #23919 -- Removed misc references to Python 2. 2017-01-21 20:02:00 -05:00
extra_regress Refs #23919 -- Replaced kwargs.pop() with keyword-only arguments. 2017-02-01 11:41:56 -05:00
field_deconstruction Added additional field_construction tests for related fields. 2017-06-14 08:57:43 -04:00
field_defaults Refs #23919 -- Removed six.<various>_types usage 2017-01-18 20:18:46 +01:00
field_subclassing Refs #23919 -- Removed encoding preambles and future imports 2017-01-18 09:55:19 +01:00
file_storage Refs #23968 -- Removed unnecessary lists, generators, and tuple calls. 2017-06-01 19:08:59 -04:00
file_uploads Fixed #28249 -- Removed unnecessary dict.keys() calls. 2017-05-27 19:08:46 -04:00
files Fixed #26651 -- Kept original file suffix in TemporaryUploadedFile name 2017-06-05 18:55:44 +02:00
fixtures Refs #27787 -- Corrected or removed invalid call_command() options. 2017-06-16 11:06:01 -04:00
fixtures_model_package Refs #23919 -- Removed python_2_unicode_compatible decorator usage 2017-01-18 13:44:34 +01:00
fixtures_regress Fixed spelling of "nonexistent". 2017-02-03 08:01:45 -05:00
flatpages_tests Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
force_insert_update Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
foreign_object Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
forms_tests Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
from_db_value Fixed #28370 -- Deprecated the context arg of Field.from_db_value() and Expression.convert_value(). 2017-07-20 16:30:08 -04:00
generic_inline_admin Refs #23919 -- Stopped inheriting from object to define new style classes. 2017-01-19 08:39:46 +01:00
generic_relations Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
generic_relations_regress Fixed #28418 -- Fixed queryset crash when using a GenericRelation to a proxy model. 2017-07-21 18:21:13 -04:00
generic_views Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
get_earliest_or_latest Avoided creating temporary lists for obtaining the first item. 2017-07-31 11:02:23 -04:00
get_object_or_404 Refs #23919 -- Replaced super(ClassName, self) with super(). 2017-01-25 12:23:46 -05:00
get_or_create Fixed #28222 -- Allowed settable properties in QuerySet.update_or_create()/get_or_create() defaults. 2017-05-27 12:41:38 -04:00
gis_tests Fixed #28441 -- Fixed GEOS version parsing with a commit hash at the end. 2017-08-02 09:30:30 -04:00
handlers Fixed #27818 -- Replaced try/except/pass with contextlib.suppress(). 2017-06-28 14:07:55 -04:00
httpwrappers Refs #27308, #27753 -- Removed obsolete cookie test mixing bytes with str. 2017-06-03 21:07:11 -04:00
humanize_tests Converted usage of ugettext* functions to their gettext* aliases 2017-02-07 09:04:04 +01:00
i18n Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
import_error_package
indexes Refs #25530 -- Tracked references of deferred SQL statements. 2017-06-21 00:03:31 -04:00
inline_formsets Refs #23919 -- Replaced super(ClassName, self) with super(). 2017-01-25 12:23:46 -05:00
inspectdb Removed unneeded force_text calls in the test suite 2017-01-24 18:45:54 +01:00
introspection Fixed #28197 -- Fixed introspection of index field ordering on PostgreSQL. 2017-05-15 08:33:31 -04:00
invalid_models_tests Made assertions in invalid_models_tests consistent. 2017-07-11 13:12:17 -04:00
known_related_objects Refs #23968 -- Removed unnecessary lists, generators, and tuple calls. 2017-06-01 19:08:59 -04:00
logging_tests Refs #23919 -- Removed default 'utf-8' argument for str.encode()/decode(). 2017-02-09 09:03:47 -05:00
lookup Fixed #27985 -- Fixed query for __exact=value when get_prep_value() converts value to None. 2017-07-31 15:34:07 -04:00
m2m_and_m2o Refs #23919, #27778 -- Removed obsolete mentions of unicode. 2017-01-26 08:19:27 -05:00
m2m_intermediary Refs #23919 -- Removed six.<various>_types usage 2017-01-18 20:18:46 +01:00
m2m_multiple Refs #23919 -- Removed python_2_unicode_compatible decorator usage 2017-01-18 13:44:34 +01:00
m2m_recursive Refs #23919 -- Removed python_2_unicode_compatible decorator usage 2017-01-18 13:44:34 +01:00
m2m_regress Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
m2m_signals Refs #23919 -- Removed python_2_unicode_compatible decorator usage 2017-01-18 13:44:34 +01:00
m2m_through Refs #23919 -- Removed python_2_unicode_compatible decorator usage 2017-01-18 13:44:34 +01:00
m2m_through_regress Refs #23968 -- Removed unnecessary lists, generators, and tuple calls. 2017-06-01 19:08:59 -04:00
m2o_recursive Refs #23919 -- Removed python_2_unicode_compatible decorator usage 2017-01-18 13:44:34 +01:00
mail Fixed #27818 -- Replaced try/except/pass with contextlib.suppress(). 2017-06-28 14:07:55 -04:00
managers_regress Refs #23919 -- Replaced super(ClassName, self) with super(). 2017-01-25 12:23:46 -05:00
many_to_many Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
many_to_one Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
many_to_one_null Refs #23919 -- Removed python_2_unicode_compatible decorator usage 2017-01-18 13:44:34 +01:00
max_lengths Refs #23919 -- Removed encoding preambles and future imports 2017-01-18 09:55:19 +01:00
messages_tests Fixed #28249 -- Removed unnecessary dict.keys() calls. 2017-05-27 19:08:46 -04:00
middleware Refs #23919 -- Removed default 'utf-8' argument for str.encode()/decode(). 2017-02-09 09:03:47 -05:00
middleware_exceptions Imported django.http classes instead of django.http. 2017-02-27 14:47:11 -05:00
migrate_signals Refs #23919 -- Stopped inheriting from object to define new style classes. 2017-01-19 08:39:46 +01:00
migration_test_data_persistence Refs #23919 -- Removed encoding preambles and future imports 2017-01-18 09:55:19 +01:00
migrations Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
migrations2 Refs #23919 -- Removed encoding preambles and future imports 2017-01-18 09:55:19 +01:00
model_fields Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
model_forms Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
model_formsets Fixed #22229 -- Added primary key validation to BaseModelFormSet._construct_form(). 2017-07-11 14:33:21 -04:00
model_formsets_regress Refs #23919 -- Replaced super(ClassName, self) with super(). 2017-01-25 12:23:46 -05:00
model_indexes Fixed #28046 -- Added the db_tablespace parameter to class-based indexes. 2017-06-27 21:15:15 +02:00
model_inheritance Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
model_inheritance_regress Fixed #26362 -- Fixed update of the inherited id field of an object when its parent changes. 2017-06-26 12:11:20 -04:00
model_meta Refs #23919 -- Stopped inheriting from object to define new style classes. 2017-06-26 10:30:31 -04:00
model_options Refs #25530 -- Tracked references of deferred SQL statements. 2017-06-21 00:03:31 -04:00
model_package Refs #23919 -- Removed encoding preambles and future imports 2017-01-18 09:55:19 +01:00
model_permalink Refs #18974 -- Deprecated @models.permalink() decorator. 2016-10-04 14:39:49 -04:00
model_regress Refs #23919 -- Removed support for broken Model.__str__() in Model.__repr__(). 2017-06-11 15:52:19 -04:00
modeladmin Added a test for ModelAdmin.__str__(). 2017-06-19 15:33:21 -04:00
multiple_database Removed a primary key value dependency in a multiple_database test. 2017-07-31 13:28:29 -04:00
mutually_referential Fixed #21127 -- Started deprecation toward requiring on_delete for ForeignKey/OneToOneField 2015-07-27 18:28:13 -04:00
nested_foreign_keys Refs #23919 -- Removed encoding preambles and future imports 2017-01-18 09:55:19 +01:00
no_models Refs #27392 -- Removed "Tests that", "Ensures that", etc. from test docstrings. 2016-11-10 21:30:21 -05:00
null_fk Refs #23919 -- Removed python_2_unicode_compatible decorator usage 2017-01-18 13:44:34 +01:00
null_fk_ordering Refs #23919 -- Removed python_2_unicode_compatible decorator usage 2017-01-18 13:44:34 +01:00
null_queries Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
one_to_one Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
or_lookups Removed obsolete references to add_to_query(). 2017-07-25 07:52:05 -04:00
order_with_respect_to Replaced type-specific assertions with assertEqual(). 2017-03-17 07:51:48 -04:00
ordering Fixed #22550 -- Prohibited QuerySet.last()/reverse() after slicing. 2017-05-31 19:34:56 -04:00
pagination Removed unnecessary empty parentheses in class definitions. 2017-06-26 10:31:32 -04:00
postgres_tests Fixed #28370 -- Deprecated the context arg of Field.from_db_value() and Expression.convert_value(). 2017-07-20 16:30:08 -04:00
prefetch_related Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
project_template Fixed #26755 -- Fixed test_middleware_classes_headers if Django source isn't writable. 2017-05-31 10:25:09 -04:00
properties Refs #23919 -- Removed encoding preambles and future imports 2017-01-18 09:55:19 +01:00
proxy_model_inheritance Refs #23919 -- Removed django.utils._os.upath()/npath()/abspathu() usage. 2017-01-20 08:01:02 -05:00
proxy_models Sorted imports per isort 4.2.9. 2017-06-01 13:23:48 -04:00
queries Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
queryset_pickle Converted usage of ugettext* functions to their gettext* aliases 2017-02-07 09:04:04 +01:00
raw_query Fixed #28206 -- Fixed RawQuerySet crash on a model with a mixed case db_column pk on Oracle. 2017-05-18 19:11:23 +02:00
redirects_tests Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
requests Fixed #28249 -- Removed unnecessary dict.keys() calls. 2017-05-27 19:08:46 -04:00
requirements Fixed #27966 -- Bumped required psycopg2 version to 2.5.4. 2017-03-21 17:23:17 +01:00
reserved_names Refs #23919 -- Removed python_2_unicode_compatible decorator usage 2017-01-18 13:44:34 +01:00
resolve_url Refs #23919 -- Removed six.<various>_types usage 2017-01-18 20:18:46 +01:00
responses Refs #23919 -- Removed encoding preambles and future imports 2017-01-18 09:55:19 +01:00
reverse_lookup Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
save_delete_hooks Refs #23919 -- Replaced super(ClassName, self) with super(). 2017-01-25 12:23:46 -05:00
schema Fixed #14204 -- Enforced SQLite foreign key constraints. 2017-07-11 09:07:31 -04:00
select_for_update Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
select_related Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
select_related_onetoone Refs #23919 -- Removed python_2_unicode_compatible decorator usage 2017-01-18 13:44:34 +01:00
select_related_regress Refs #23919 -- Removed six.<various>_types usage 2017-01-18 20:18:46 +01:00
serializers Fixed #28370 -- Deprecated the context arg of Field.from_db_value() and Expression.convert_value(). 2017-07-20 16:30:08 -04:00
servers Fixed ResourceWarnings in tests/servers/tests.py. 2017-06-05 09:56:51 -04:00
sessions_tests Sorted imports per isort 4.2.9. 2017-06-01 13:23:48 -04:00
settings_tests Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
shell Refs #23919 -- Removed django.test.mock Python 2 compatibility shim. 2017-01-20 08:17:20 -05:00
shortcuts Fixed #25978 -- Deprecated shorcuts.render_to_response(). 2017-02-11 05:49:04 -05:00
signals Refs #23919 -- Replaced super(ClassName, self) with super(). 2017-01-25 12:23:46 -05:00
signed_cookies_tests Refs #23919 -- Removed encoding preambles and future imports 2017-01-18 09:55:19 +01:00
signing Refs #23919 -- Removed default 'utf-8' argument for str.encode()/decode(). 2017-02-09 09:03:47 -05:00
sitemaps_tests Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
sites_framework Refs #23919 -- Removed python_2_unicode_compatible decorator usage 2017-01-18 13:44:34 +01:00
sites_tests Refs #23919 -- Stopped inheriting from object to define new style classes. 2017-01-19 08:39:46 +01:00
staticfiles_tests Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
str Fixed #27953 -- Added instance's pk to Model.__str__(). 2017-06-09 13:42:53 -04:00
string_lookup Refs #27795 -- Removed unneeded force_text calls 2017-03-04 18:18:21 +01:00
swappable_models Refs #27790 -- Reverted "Removed available_apps on TestCase subclasses." 2017-01-28 10:01:13 -05:00
syndication_tests Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
template_backends Fixed spelling of "nonexistent". 2017-02-03 08:01:45 -05:00
template_loader Fixed #25788 -- Enabled the cached template loader if debug is False. 2016-09-03 09:06:33 -04:00
template_tests Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
templates Fixed rendering of form errors in tests/templates/login.html. 2017-07-11 07:53:06 -04:00
test_client Fixed #28249 -- Removed unnecessary dict.keys() calls. 2017-05-27 19:08:46 -04:00
test_client_regress Decoupled test client encoding tests from JSON handling 2017-03-09 22:15:10 +01:00
test_discovery_sample Refs #25735 -- Made @tag decorator importable from django.test. 2016-02-19 14:21:00 -05:00
test_discovery_sample2
test_exceptions
test_runner Fixed #28360 -- Fixed test runner crash with --debug-sql on fail/error in subTest. 2017-07-05 16:56:24 -04:00
test_utils Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
timezones Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
transaction_hooks Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
transactions Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
unmanaged_models Sorted imports per isort 4.2.9. 2017-06-01 13:23:48 -04:00
update Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
update_only_fields Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
urlpatterns_reverse Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
user_commands Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
utils_tests Refs #28389 -- Added release note and test for pickling of LazyObject when wrapped object doesn't have __reduce__(). 2017-07-12 09:30:29 -04:00
validation Refs #23919 -- Replaced super(ClassName, self) with super(). 2017-01-25 12:23:46 -05:00
validators Used assertRaisesMessage() to test Django's error messages. 2017-07-29 19:07:23 -04:00
version Fixed #27830 -- Used distutils.version.LooseVersion for version parsing. 2017-06-13 10:53:39 -04:00
view_tests Fixed #28457 -- Updated the design of the 'Congrats' page for new Django projects. 2017-08-07 10:33:55 -04:00
wsgi Refs #23919 -- Stopped inheriting from object to define new style classes. 2017-01-19 08:39:46 +01:00
.coveragerc Fixed #25209 -- Removed parallel=True coverage option 2015-08-04 09:32:12 -04:00
README.rst Refs #23919 -- Removed misc Python 2/3 references. 2017-01-25 13:59:25 -05:00
runtests.py Fixed #27818 -- Replaced try/except/pass with contextlib.suppress(). 2017-06-28 14:07:55 -04:00
test_sqlite.py
urls.py Fixed "URLconf" spelling in code comments. 2015-10-22 14:46:42 -04:00

README.rst

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

    $ cd tests
    $ pip install -e ..
    $ 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/.