Changes
-------
* The timestamps generated by ``TestResult`` objects when no timing data has
been received are now datetime-with-timezone, which allows them to be
sensibly serialised and transported. (Robert Collins, #692297)
Improvements
------------
* ``AnnotatedMismatch`` now correctly returns details.
(Jonathan Lange, #724691)
* distutils integration for the testtools test runner. Can now use it for
'python setup.py test'. (Christian Kampka, #693773)
* ``EndsWith`` and ``KeysEqual`` now in testtools.matchers.__all__.
(Jonathan Lange, #692158)
* ``MatchesException`` extended to support a regular expression check against
the str() of a raised exception. (Jonathan Lange)
* ``MultiTestResult`` now forwards the ``time`` API. (Robert Collins, #692294)
* ``MultiTestResult`` now documented in the manual. (Jonathan Lange, #661116)
* New content helpers ``content_from_file``, ``content_from_stream`` and
``attach_file`` make it easier to attach file-like objects to a
test. (Jonathan Lange, Robert Collins, #694126)
* New ``ExpectedException`` context manager to help write tests against things
that are expected to raise exceptions. (Aaron Bentley)
* New matchers:
* ``MatchesListwise`` matches an iterable of matchers against an iterable
of values. (Michael Hudson-Doyle)
* ``MatchesRegex`` matches a string against a regular expression.
(Michael Hudson-Doyle)
* ``MatchesStructure`` matches attributes of an object against given
matchers. (Michael Hudson-Doyle)
* ``AfterPreproccessing`` matches values against a matcher after passing them
through a callable. (Michael Hudson-Doyle)
* ``MatchesSetwise`` matches an iterable of matchers against an iterable of
values, without regard to order. (Michael Hudson-Doyle)
* ``setup.py`` can now build a snapshot when Bazaar is installed but the tree
is not a Bazaar tree. (Jelmer Vernooij)
* Support for running tests using distutils (Christian Kampka, #726539)
* Vastly improved and extended documentation. (Jonathan Lange)
* Use unittest2 exception classes if available. (Jelmer Vernooij)