django1/tests
Claude Paroz 3569ba0333 Fixed #27015 -- Prevented HTML-invalid minlength/maxlength on hidden inputs 2016-08-06 10:22:17 +02:00
..
absolute_url_overrides Fixed #26125 -- Fixed E731 flake warnings. 2016-01-25 14:23:43 -05:00
admin_autodiscover Sorted imports with isort; refs #23860. 2015-02-06 08:16:28 -05:00
admin_changelist Fixed #26747 -- Used more specific assertions in the Django test suite. 2016-06-16 14:19:18 -04:00
admin_checks Refs #24227 -- Replaced M2M isinstance checks by field.many_to_many 2016-03-19 09:24:27 +01:00
admin_custom_urls Fixed E128 flake8 warnings in tests/. 2016-04-08 10:12:33 -04:00
admin_docs Fixed #24931 -- Made namespaced RegexURLResolvers populate callback strings. 2016-06-18 10:39:32 -04:00
admin_filters Fixed #26747 -- Used more specific assertions in the Django test suite. 2016-06-16 14:19:18 -04:00
admin_inlines Fixed #26729 -- Allowed overriding a form field's label/help_text in Form.__init__() for TabularInline. 2016-06-21 14:26:47 -04:00
admin_ordering Fixed #25985 -- Updated signature of ModelAdmin.formfield_for_* to make request a positional argument. 2015-12-29 12:49:14 -05:00
admin_registration Used assertIsInstance in admin_registration tests. 2016-03-24 19:20:31 -04:00
admin_scripts Fixed #26791 -- Replaced LiveServerTestCase port ranges with binding to port 0. 2016-06-23 12:04:05 -04:00
admin_utils Fixed admin_utils test failures due to translation updates. 2016-08-01 15:40:46 -04:00
admin_views Fixed XSS in admin's add/change related popup. 2016-07-18 11:17:01 -04:00
admin_widgets Fixed #26747 -- Used more specific assertions in the Django test suite. 2016-06-16 14:19:18 -04:00
aggregation Fixed #26458 -- Based Avg's default output_field resolution on its source field type. 2016-04-05 23:48:08 -04:00
aggregation_regress Fixed E128 flake8 warnings in tests/. 2016-04-08 10:12:33 -04:00
annotations Fixed E128 flake8 warnings in tests/. 2016-04-08 10:12:33 -04:00
app_loading Refs #26022 -- Replaced six.assertRaisesRegex with assertRaisesMessage as appropriate. 2016-01-29 13:37:33 -05:00
apps Fixed #26616 -- Improved error message when AppConfig.name is invalid. 2016-06-02 10:37:00 -04:00
auth_tests Fixed #26997 -- Fixed checks crash with empty Meta.default_permissions. 2016-08-03 09:14:01 -04:00
backends Removed an obsolete comment about a fixed ticket. 2016-05-21 15:42:38 -04:00
base
bash_completion Fixed E128 flake8 warnings in tests/. 2016-04-08 10:12:33 -04:00
basic Fixed #26787 -- Documented deleting and reloading of model instance fields. 2016-06-21 14:39:17 -04:00
builtin_server Sorted imports with isort; refs #23860. 2015-02-06 08:16:28 -05:00
bulk_create Refs #19527 -- Allowed QuerySet.bulk_create() to set the primary key of its objects. 2016-03-02 14:29:09 -05:00
cache Made miscellaneous code cleanups 2016-07-21 10:08:19 -04:00
check_framework Replaced use of TestCase.fail() with assertRaises(). 2016-06-28 11:21:26 -04:00
choices Sorted imports with isort; refs #23860. 2015-02-06 08:16:28 -05:00
conditional_processing Refs #24652 -- Used SimpleTestCase where appropriate. 2015-05-20 13:46:13 -04:00
contenttypes_tests Fixed #18682 -- Expanded explanation in stale content type deletion. (#6869) 2016-07-03 15:55:14 +02:00
context_processors Fixed #26145 -- Made debug context processor return queries for all databases. 2016-04-09 11:47:15 -04:00
csrf_tests Fixed #26747 -- Used more specific assertions in the Django test suite. 2016-06-16 14:19:18 -04:00
custom_columns Refs #26022 -- Used context manager version of assertRaisesMessage in tests. 2016-01-29 13:03:39 -05:00
custom_lookups Fixed #24629 -- Unified Transform and Expression APIs 2015-09-21 19:56:24 +10:00
custom_managers Fixed #26747 -- Used more specific assertions in the Django test suite. 2016-06-16 14:19:18 -04:00
custom_methods Tweak some examples. 2015-08-22 20:25:42 +02:00
custom_migration_operations
custom_pk Refs #26022 -- Used context manager version of assertRaises in tests. 2016-01-29 12:32:18 -05:00
datatypes Fixed E128 flake8 warnings in tests/. 2016-04-08 10:12:33 -04:00
dates Refs #26022 -- Replaced six.assertRaisesRegex with assertRaisesMessage as appropriate. 2016-01-29 13:37:33 -05:00
datetimes Fixed #25774 -- Refactor datetime expressions into public API 2016-05-18 20:14:58 +10:00
db_functions Fixed #26348 -- Added TruncTime and exposed it through the __time lookup. 2016-07-08 12:35:34 -04:00
db_typecasts Fixed #26498 -- Fixed TimeField microseconds round-tripping on MySQL and SQLite. 2016-04-18 09:39:46 -04:00
dbshell Fixed #26698 -- Fixed PostgreSQL dbshell crash on an empty database name. 2016-06-03 12:30:21 -04:00
decorators Fixed #26747 -- Used more specific assertions in the Django test suite. 2016-06-16 14:19:18 -04:00
defer Fixed #26207 -- Replaced dynamic classes with non-data descriptors for deferred instance loading. 2016-04-29 13:06:32 -04:00
defer_regress Refs #18100 -- Added tests for deferred model deletion signals. 2016-05-10 13:21:52 -04:00
delete Fixed E128 flake8 warnings in tests/. 2016-04-08 10:12:33 -04:00
delete_regress Changed database connection duplication technique. 2015-09-09 23:03:51 +02:00
deprecation Fixed E128 flake8 warnings in tests/. 2016-04-08 10:12:33 -04:00
dispatch Used assertIsInstance in tests. 2015-04-27 08:40:36 -04:00
distinct_on_fields Refs #26022 -- Used context manager version of assertRaisesMessage in tests. 2016-01-29 13:03:39 -05:00
empty
expressions Fixed #25774 -- Refactor datetime expressions into public API 2016-05-18 20:14:58 +10:00
expressions_case Sorted single letter imports per the latest version of isort. 2016-03-28 11:45:31 -04:00
extra_regress Fixed E128 flake8 warnings in tests/. 2016-04-08 10:12:33 -04:00
field_deconstruction Refs #24590 -- Ensured isolation between autodetector tests 2015-08-28 10:17:34 +10:00
field_defaults
field_subclassing Removed SubfieldBase per deprecation timeline. 2015-09-23 19:31:09 -04:00
file_storage Fixed #26896 -- Allowed a lazy base_url for FileSystemStorage. 2016-07-29 14:13:54 -04:00
file_uploads Replaced use of TestCase.fail() with assertRaises(). 2016-06-28 11:21:26 -04:00
files Reverted "Fixed #26644 -- Allowed wrapping NamedTemporaryFile with File." 2016-06-18 11:06:56 -04:00
fixtures Fixed #26826 -- Stripped spaces from dumpdata pks arguments 2016-07-16 20:49:10 +02:00
fixtures_model_package Fixed #21549 -- Made loaddata's 'fixture not found' warning an exception. 2016-01-04 19:39:35 -05:00
fixtures_regress Replaced use of TestCase.fail() with assertRaises(). 2016-06-28 11:21:26 -04:00
flatpages_tests Refs #26601 -- Deprecated old-style middleware. 2016-05-17 07:22:26 -04:00
force_insert_update Sorted imports with isort; refs #23860. 2015-02-06 08:16:28 -05:00
foreign_object Fixed #26515 -- Fixed Query.trim_joins() for nested ForeignObjects. 2016-05-19 09:56:24 -04:00
forms_tests Fixed #27015 -- Prevented HTML-invalid minlength/maxlength on hidden inputs 2016-08-06 10:22:17 +02:00
from_db_value Refs #9619 -- Fixed failing test case 2015-06-17 20:07:00 +02:00
generic_inline_admin Fixed #26747 -- Used more specific assertions in the Django test suite. 2016-06-16 14:19:18 -04:00
generic_relations Refs #18599 -- Added a test for assigning a GenericForeignKey in Model.__init__(). 2016-05-13 21:26:48 -04:00
generic_relations_regress Replaced use of TestCase.fail() with assertRaises(). 2016-06-28 11:21:26 -04:00
generic_views Replaced use of TestCase.fail() with assertRaises(). 2016-06-28 11:21:26 -04:00
get_earliest_or_latest Made multiline assertRaises* conform to flake8's E128 rule. 2016-02-04 19:14:10 -05:00
get_object_or_404 Fixed #10532 -- Relaxed hard-type checking in get_object/list_or_404 shortcuts 2016-03-29 21:34:20 +02:00
get_or_create Fixed #26933 -- Fixed flaky update_or_create() test from refs #26804. 2016-07-28 21:45:35 -04:00
gis_tests Fixed a GeoIP test failure with the latest data. 2016-08-03 11:08:30 -04:00
handlers Refs #24829 -- Made TemplateResponse.content available sooner in exception context 2016-06-24 10:22:30 +02:00
http_utils Fixed #26052 -- Moved conditional_content_removal() processing to the test client. 2016-04-25 07:56:07 -04:00
httpwrappers Fixed #26747 -- Used more specific assertions in the Django test suite. 2016-06-16 14:19:18 -04:00
humanize_tests Refs #26712 -- Removed workarounds for PostgreSQL queries on TIME_ZONE changes. 2016-06-06 11:26:21 -04:00
i18n Fixed #26945 -- Ensured that i18n_patterns returns a list 2016-07-24 17:17:00 +02:00
import_error_package
indexes Refs #26889 -- Refactored SchemaEditor to allow backend specific indexes. 2016-07-15 10:34:37 -04:00
inline_formsets Fixed #26747 -- Used more specific assertions in the Django test suite. 2016-06-16 14:19:18 -04:00
inspectdb Refs #24928 -- Added introspection support for UUIDField 2016-07-20 17:27:29 +02:00
introspection Fixed E128 flake8 warnings in tests/. 2016-04-08 10:12:33 -04:00
invalid_models_tests Refs #26796 -- Fixed ManyToManyField's limit_choices_to warning without a through model. 2016-07-21 14:29:03 -04:00
known_related_objects Fixed #21127 -- Started deprecation toward requiring on_delete for ForeignKey/OneToOneField 2015-07-27 18:28:13 -04:00
logging_tests Fixed #26747 -- Used more specific assertions in the Django test suite. 2016-06-16 14:19:18 -04:00
lookup Fixed #26285 -- Deprecated the MySQL-specific __search lookup. 2016-03-02 14:41:56 -05:00
m2m_and_m2o Fixed #21127 -- Started deprecation toward requiring on_delete for ForeignKey/OneToOneField 2015-07-27 18:28:13 -04:00
m2m_intermediary Fixed #21127 -- Started deprecation toward requiring on_delete for ForeignKey/OneToOneField 2015-07-27 18:28:13 -04:00
m2m_multiple Tweak some examples. 2015-08-22 20:25:42 +02:00
m2m_recursive
m2m_regress Fixed #25550 -- Deprecated direct assignment to the reverse side of a related set. 2015-10-27 07:57:15 -04:00
m2m_signals Fixed #25550 -- Deprecated direct assignment to the reverse side of a related set. 2015-10-27 07:57:15 -04:00
m2m_through Refs #26092 -- Added @skipUnlessDBFeature to a test. 2016-01-21 08:05:55 -05:00
m2m_through_regress Fixed E128 flake8 warnings in tests/. 2016-04-08 10:12:33 -04:00
m2o_recursive Fixed #26747 -- Used more specific assertions in the Django test suite. 2016-06-16 14:19:18 -04:00
mail Fixed #26802 -- Prevented crash when attaching bytes as text message 2016-07-08 11:58:05 +02:00
managers_regress Fixed #26749 -- Preserved behavior of use_for_related_field during deprecation. 2016-07-11 13:30:44 -04:00
many_to_many Fixed #26706 -- Made RelatedManager modification methods clear prefetch_related() cache. 2016-08-05 13:32:27 -04:00
many_to_one Fixed #26706 -- Made RelatedManager modification methods clear prefetch_related() cache. 2016-08-05 13:32:27 -04:00
many_to_one_null Fixed #26747 -- Used more specific assertions in the Django test suite. 2016-06-16 14:19:18 -04:00
max_lengths Sorted imports with isort; refs #23860. 2015-02-06 08:16:28 -05:00
messages_tests Fixed #26747 -- Used more specific assertions in the Django test suite. 2016-06-16 14:19:18 -04:00
middleware Fixed a typo in tests/middleware/test_security.py 2016-07-28 22:00:48 -04:00
middleware_exceptions Fixed #26915 -- Fixed regression handling responses returned from view middleware. 2016-07-25 13:41:50 -04:00
migrate_signals Made miscellaneous code cleanups 2016-07-21 10:08:19 -04:00
migration_test_data_persistence Sorted imports with isort; refs #23860. 2015-02-06 08:16:28 -05:00
migrations Fixed #26808 -- Added Meta.indexes for class-based indexes. 2016-08-05 18:12:51 -04:00
migrations2 Fixed #24743, #24745 -- Optimized migration plan handling 2015-09-19 14:54:53 +10:00
model_fields Fixed #26900 -- Fixed crash accessing deferred FileFields. 2016-07-16 08:22:24 -04:00
model_forms Fixed #27001 -- Fixed a query count regression in ModelChoiceField with RadioSelect. 2016-08-03 10:45:55 -04:00
model_formsets Fixed #26747 -- Used more specific assertions in the Django test suite. 2016-06-16 14:19:18 -04:00
model_formsets_regress Fixed #23395 -- Limited line lengths to 119 characters. 2015-09-12 11:40:50 -04:00
model_indexes Fixed #26808 -- Added Meta.indexes for class-based indexes. 2016-08-05 18:12:51 -04:00
model_inheritance Avoided uncessary table creation in model_inheritance tests. 2016-05-31 15:15:54 -04:00
model_inheritance_regress Fixed #15250 -- Avoided extra query on some multi-table inheritance queries. 2016-06-03 10:18:24 -04:00
model_meta Refs #16508 -- Renamed the current "virtual" fields to "private". 2016-04-13 10:10:53 -04:00
model_options Fixed E128 flake8 warnings in tests/. 2016-04-08 10:12:33 -04:00
model_package Sorted imports with isort; refs #23860. 2015-02-06 08:16:28 -05:00
model_permalink Refs #24652 -- Used SimpleTestCase where appropriate. 2015-05-20 13:46:13 -04:00
model_regress Refs #24007 -- Removed an apps.populate() call in model unpickling that can cause deadlocks. 2016-02-08 08:28:48 -05:00
model_validation Fixed #26421 -- Refactored ModelSignal to use Apps.lazy_model_operation() 2016-05-19 21:33:36 -04:00
modeladmin Fixed #19963 -- Added support for date_hierarchy across relations. 2016-06-04 12:14:02 -04:00
multiple_database Replaced use of TestCase.fail() with assertRaises(). 2016-06-28 11:21:26 -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 Fixed #23395 -- Limited line lengths to 119 characters. 2015-09-12 11:40:50 -04:00
no_models Refs #24652 -- Used SimpleTestCase where appropriate. 2015-05-20 13:46:13 -04:00
null_fk Fixed #26747 -- Used more specific assertions in the Django test suite. 2016-06-16 14:19:18 -04:00
null_fk_ordering Fixed many spelling mistakes in code, comments, and docs. 2015-12-03 12:48:24 -05:00
null_queries Refs #26022 -- Used context manager version of assertRaises in tests. 2016-01-29 12:32:18 -05:00
one_to_one Fixed #26667 -- Fixed a regression in queries on a OneToOneField that has to_field and primary_key=True. 2016-06-04 08:04:51 -04:00
or_lookups Fixed W503 flake8 warnings. 2016-04-04 17:14:26 -04:00
order_with_respect_to Fixed #25746 -- Isolated inlined test models registration. 2016-01-06 20:00:07 -05:00
ordering Correct a grammatical error: "it's related model" 2016-03-09 20:40:17 -08:00
pagination Fixed #26290 -- Warned that paginating an unordered QuerySet may result in inconsistent results. 2016-06-08 14:09:24 -04:00
postgres_tests Fixed #26949 -- Fixed crash of disabled forms.JSONField. 2016-07-27 08:14:14 -04:00
prefetch_related Fixed #26916 -- Fixed prefetch_related when using a cached_property as to_attr. 2016-07-19 16:05:07 -04:00
project_template Fixed #5897 -- Added the Content-Length response header in CommonMiddleware 2016-06-27 10:44:57 +02:00
properties Refs #26022 -- Used context manager version of assertRaises in tests. 2016-01-29 12:32:18 -05:00
proxy_model_inheritance Fixed #23076, #25505 -- Fixed deletion of intermediate proxy models. 2015-10-12 12:14:26 -04:00
proxy_models Replaced use of TestCase.fail() with assertRaises(). 2016-06-28 11:21:26 -04:00
queries Fixed #26983 -- Fixed isnull filtering on ForeignKey with to_field 2016-08-04 16:05:21 +02:00
queryset_pickle Fixed many spelling mistakes in code, comments, and docs. 2015-12-03 12:48:24 -05:00
raw_query Replaced use of TestCase.fail() with assertRaises(). 2016-06-28 11:21:26 -04:00
redirects_tests Refs #26601 -- Deprecated old-style middleware. 2016-05-17 07:22:26 -04:00
requests Fixed #27005 -- Fixed crash if request.META[''CONTENT_LENGTH']=''. 2016-08-03 13:12:40 -04:00
requirements Refs #26033 -- Added password hasher support for Argon2 v1.3. 2016-04-25 21:17:53 -04:00
reserved_names Fixed E128 flake8 warnings in tests/. 2016-04-08 10:12:33 -04:00
resolve_url Refs #17209 -- Added LoginView and LogoutView class-based views 2016-06-24 10:45:13 +02:00
responses Refs #26022 -- Used context manager version of assertRaises in tests. 2016-01-29 12:32:18 -05:00
reverse_lookup Refs #26022 -- Used context manager version of assertRaises in tests. 2016-01-29 12:32:18 -05:00
save_delete_hooks
schema Fixed #26889 -- Fixed missing PostgreSQL index in SchemaEditor.add_field(). 2016-07-13 14:33:54 -07:00
select_for_update Used CaptureQueriesContext in select_for_update tests. 2016-08-05 17:00:11 -04:00
select_related Fixed #26747 -- Used more specific assertions in the Django test suite. 2016-06-16 14:19:18 -04:00
select_related_onetoone Fixed #26486 -- Fixed a select_related() + defer() MTI edge case. 2016-04-13 10:32:17 -04:00
select_related_regress Fixed E128 flake8 warnings in tests/. 2016-04-08 10:12:33 -04:00
serializers Fixed #26656 -- Added duration (timedelta) support to DjangoJSONEncoder. 2016-07-14 13:34:15 -04:00
servers Fixed #26791 -- Replaced LiveServerTestCase port ranges with binding to port 0. 2016-06-23 12:04:05 -04:00
sessions_tests Replaced use of TestCase.fail() with assertRaises(). 2016-06-28 11:21:26 -04:00
settings_tests Replaced use of TestCase.fail() with assertRaises(). 2016-06-28 11:21:26 -04:00
shell Fixed #25680 -- Added django-admin shell --command option. 2016-01-06 18:43:41 -05:00
shortcuts Removed unused view and url from shortcuts tests. 2016-04-12 07:54:34 -04:00
signals Fixed #26778 -- Fixed ModelSignal.connect() weak argument. 2016-06-18 20:45:38 -04:00
signed_cookies_tests Fixed #26747 -- Used more specific assertions in the Django test suite. 2016-06-16 14:19:18 -04:00
signing Fixed E128 flake8 warnings in tests/. 2016-04-08 10:12:33 -04:00
sitemaps_tests Fixed #26290 -- Warned that paginating an unordered QuerySet may result in inconsistent results. 2016-06-08 14:09:24 -04:00
sites_framework Refs #24227 -- Replaced M2M isinstance checks by field.many_to_many 2016-03-19 09:24:27 +01:00
sites_tests Refs #26666 -- Added ALLOWED_HOSTS validation when running tests. 2016-06-20 11:07:46 -04:00
staticfiles_tests Fixed #26671 -- Made HashedFilesMixin ignore the 'chrome' scheme. 2016-07-12 08:20:39 -04:00
str Fixed #25746 -- Isolated inlined test models registration. 2016-01-06 20:00:07 -05:00
string_lookup Fixed #25508 -- Modified QuerySet.__repr__() to disambiguate it from a list. 2015-10-06 12:38:34 -04:00
swappable_models Replaced use of TestCase.fail() with assertRaises(). 2016-06-28 11:21:26 -04:00
syndication_tests Made multiline assertRaises* conform to flake8's E128 rule. 2016-02-04 19:14:10 -05:00
template_backends Fixed #24694 -- Added support for context_processors to Jinja2 backend. 2016-06-28 14:30:54 -04:00
template_loader Fixed #26109 -- Raised a helpful error if loader.select_tamplate() is passed a string. 2016-01-25 18:37:02 -05:00
template_tests Fixed #26923 -- Fixed template_tests with numpy < 1.9.0. 2016-07-21 12:59:55 -04:00
templates Changed `action="."` to `action=""` in tests and docs. 2016-01-21 13:59:15 -05:00
test_client Fixed #27020 -- Used a context manager to close files. 2016-08-04 19:45:14 -04:00
test_client_regress Fixed #27012 -- Removed unnecessary setup_test_environment() in a test. 2016-08-04 09:35:44 -04: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 #26981 -- Added DiscoverRunner.get_test_runner_kwargs(). 2016-08-04 14:45:44 -04:00
test_utils Fixed #26922 -- Fixed SimpleTestCase.assertHTMLEqual() crash on Python 3.5+. 2016-07-21 14:01:23 -04:00
timezones Fixed #26747 -- Used more specific assertions in the Django test suite. 2016-06-16 14:19:18 -04:00
transaction_hooks Fixed #26627 -- Fixed on_commit callbacks execution order when callbacks make transactions. 2016-05-18 09:09:48 -04:00
transactions Fixed E128 flake8 warnings in tests/. 2016-04-08 10:12:33 -04:00
unmanaged_models Removed British/Austrialian word: whilist. 2015-12-31 14:29:52 -05:00
update Fixed #19513, #18580 -- Fixed crash on QuerySet.update() after annotate(). 2016-06-29 14:08:13 -04:00
update_only_fields Fixed E128 flake8 warnings in tests/. 2016-04-08 10:12:33 -04:00
urlpatterns_reverse Fixed #26888 -- Fixed concurrency issue in URL resolver. 2016-07-14 14:41:52 -04:00
user_commands Made miscellaneous code cleanups 2016-07-21 10:08:19 -04:00
utils_tests Fixed #26988 -- Improved/clarified User.is_authenticated/anonymous compatibility. 2016-08-02 11:01:08 -04:00
validation Replaced use of TestCase.fail() with assertRaises(). 2016-06-28 11:21:26 -04:00
validators Refs #21548 -- Skipped tests that rely on pillow when it's not installed 2016-07-02 15:46:16 +02:00
version Fixed #25769 -- Updated get_version() release candidate naming for PEP 0440. 2015-11-19 10:00:09 -05:00
view_tests Fixed #26938 -- Fixed invalid HTML in template postmortem on the debug page. 2016-07-24 18:18:57 +02:00
wsgi Improved test assertion in wsgi tests 2016-06-28 12:02:51 +02:00
.coveragerc Fixed #25209 -- Removed parallel=True coverage option 2015-08-04 09:32:12 -04:00
README.rst
runtests.py Made miscellaneous code cleanups 2016-07-21 10:08:19 -04:00
test_sqlite.py Added trailing comma. 2015-02-06 12:58:45 +01:00
urls.py Fixed "URLconf" spelling in code comments. 2015-10-22 14:46:42 -04:00

README.rst

To run the test suite::

    $ cd tests
    $ pip install -r requirements/py3.txt  # or py2.txt
    $ PYTHONPATH=..:$PYTHONPATH ./runtests.py

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