~~~~~
More matchers, Python 2.4 support, faster test cloning by switching to copy
rather than deepcopy and better output when exceptions occur in cleanups are
the defining characteristics of this release.
Improvements
------------
* New matcher "Annotate" that adds a simple string message to another matcher,
much like the option 'message' parameter to standard library assertFoo
methods.
* New matchers "Not" and "MatchesAll". "Not" will invert another matcher, and
"MatchesAll" that needs a successful match for all of its arguments.
* On Python 2.4, where types.FunctionType cannot be deepcopied, testtools will
now monkeypatch copy._deepcopy_dispatch using the same trivial patch that
added such support to Python 2.5. The monkey patch is triggered by the
absence of FunctionType from the dispatch dict rather than a version check.
Bug 498030.
* On windows the test 'test_now_datetime_now' should now work reliably.
* TestCase.getUniqueInteger and TestCase.getUniqueString now have docstrings.
* TestCase.getUniqueString now takes an optional prefix parameter, so you can
now use it in circumstances that forbid strings with '.'s, and such like.
* testtools.testcase.clone_test_with_new_id now uses copy.copy, rather than
copy.deepcopy. Tests that need a deeper copy should use the copy protocol to
control how they are copied. Bug 498869.
* The backtrace test result output tests should now pass on windows and other
systems where os.sep is not '/'.
* When a cleanUp or tearDown exception occurs, it is now accumulated as a new
traceback in the test details, rather than as a separate call to addError /
addException. This makes testtools work better with most TestResult objects
and fixes bug 335816.