Fixed typo in WidthRatioNode's error.
Fixed a regression in distinct_on

Caused by regression fix for #19500.
Fixed #19387 -- Preserved SafeData status in contrib.messages

Thanks Anton Baklanov for the report and the patch.
Fixed #19506 - Remove 'mysite' prefix in model example.

Thanks Mike O'Connor for the report.
Fixed #19497 -- Refactored testing docs.

Thanks Tim Graham for the review and suggestions.
Fixed #19487 -- Used str in the test client's WSGI environ.

This regression was introduced by the unicode_literals patch. The WSGI
spec mandates that environ contains native strings.
Fixed #19468 -- Decoded request.path correctly on Python 3.

Thanks aliva for the report and claudep for the feedback.
Fixed #19509 -- Fixed crypt/bcrypt non-ascii password encoding

Also systematically added non-ascii passwords in hashers test suite.
Thanks Vaal for the report.
Better name for a new testing documentation link.
Fixed #15516 -- Updated the ticket life cycle diagram.
Add assertInHTML method to TestCase
Add assertJSONEqual method to TestCase
Use new TestCase methods for equality comparisons
Use HTML parser to compare html snippets
Don't rely on dictionary ordering in tests
Sort HTML attributes on generated forms
Made admin generated changelist URLs independent of dict ordering
Fixed a dependence on set-ordering in tests
Fixed HTML comparisons of class="foo bar" and class="bar foo" in tests

Refs #17758
Fixed a randomly failing test under Python 3.

Refs #17758.