1CHANGES
2=======
3
42.5.0
5-----
6
7* Release 2.5.0
8* Update testtools/compat.py
9* Note Python 3.5 is EOL and will be dropped after the next release
10* Fix for Python 3.10
11* Add python 3.10 to ci configuration
12* testtools.compat: provide BytesIO, StringIO again
13* Add support for Python 3.9
14* Update and simplify workflow
15* Fix UserWarning: Usage of dash-separated ... will not be supported in future versions. Please use the underscore name ... instead
16* Fix tests with Python 3.10
17* Remove mimeparse dependency
18* trivial: Cleanup imports
19* Re-introduce 'try\_imports'
20* Remove use of 'try\_imports'
21* tox: Don't skip sdist
22* Remove use of 'safe\_hasattr'
23* NEWS: Add note about unittest2 removal
24* Fix github actions
25* Update testtools/content.py
26* Update tox.ini
27* Update github actions config to use release 3.9
28* Drop traceback2 in favor of traceback and remove unused linecache2
29* Update tox.ini
30* Add tox.ini file
31* Remove tox.ini file
32* restore testtools/tests/test\_testcase.py
33* Remove unittest2 from setup.cfg and add tox.ini file
34* Remove unrelated change
35* Restore test\_spinner.py
36* Remove unused try\_import
37* Test on Python 3.9-dev
38* Compare items using sets instead of sequences
39* Add implementation for legacy assertItemsEqual existing in unittest2 library
40* Do actually remove all references to unittest2 library
41* Remove the travis config
42* Add back travis config
43* Update testtools/testcase.py
44* Limit use of unittest2 to old Python versions
45* Fix syntax error test for Python 3.9
46* Remove Travis CI config
47* Test on GitHub Actions
48* Remove stray six import
49* Testtools 2.4.0 is the last to support Python 2.7
50
512.4.0
52-----
53
54* Release 2.4.0
55* Fix classifier
56* Universal wheels only when supporting Python 2 and 3
57* Supports 2.7 and 3.5+
58* Drop support for EOL Python 2.7
59* Remove six
60* Upgrade Python syntax with pyupgrade --py3-plus
61* Remove redundant Python 2 compatability code
62* Upgrade Python syntax with pyupgrade
63* Drop support for EOL Python 2.7
64* If you wish to use testtools with Python 3.3 or 3.4, then please use testtools 2.3.0
65* If you wish to use testtools with Python 3.3 or 3.4, then please use testtools 2.3.0
66* Add myself to contributors list
67* Add support for Python 3.7 and 3.8
68* Cache pip directory
69* Test CI on PyPy3
70* Tell pip not to install for Python 3.4
71* Drop support for EOL Python 3.4
72* Extra space expected in PyPy output
73* Update content.py
74* Update \_warnings.py
75* Publicly expose the SameMembers matcher
76* PyCharm IDE unittest detection compatibility fix
77* Remove unittest2 usage from testtools
78* Don't use eval()
79* Allow skip/skipIf/skipUnless as class decorators
80* Get rid of Python 2.4 support from skip decorator
81* Fix the tests on Python 3.7
82* Drop support for EOL Python 3.3
83* Ignore IDE metadata
84* Update classifiers
85* Remove old Python 2.6 code
86* Spelling fixes (#261)
87* Python 3.6 invalid escape sequence deprecation fixes (#262)
88
892.3.0
90-----
91
92* Release 2.3.0
93* Add ResourcedToStreamDecorator test result decorator for testresources integration (#243)
94* Make KeysEqual usable with no arguments, i.e. match a dict with no keys. (#241)
95* Add testtools.assertions to the documented API modules (#257)
96* Add Python 3.6 to the list of Travis targets (#255)
97* Don't add file details without content (#252)
98* Don't run Sphinx on Travis Python 3.3 target (#250)
99* Make twistedsupport and tests work on Python 3
100
1012.2.0
102-----
103
104* Release 2.2.0
105* Depend on the extras 1.0.0 release
106* Unbreak fixtures test suite / use of gather\_details
107* UTF-8 encode Twisted logs (allenap)
108* Use inlineCallbacks instead of deferredGenerator
109* Fix \_lp\_release: NEXT is case sensitive
110
1112.1.0
112-----
113
114* Release 2.1.0
115* Correct docs for skip deprecation
116* Add matchers for detecting emitted warnings
117* Revert usage of pyrsistent
118* Add unique\_text\_generator
119* Become compatible with newer Fixtures \_setUp() API
120* Better handling of KeyboardInterrupt
121* Fix example in docstring for \`failed\`
122* Move all Twisted code to twistedsupport package
123* Revert "Move all Twisted code to twistedsupport package"
124* Move all Twisted code to twistedsupport package
125* Add Always & Never matchers
126* Support TestResults without stop/shouldStop
127* Stop using deprecated \`skip()\` internally
128
1292.0.0
130-----
131
132* Release 2.0.0
133* Options for logging in AsynchronousDeferredRunTest
134* Twisted tests now pass under --debug-stacktraces
135* Decouple log handling from Deferred wrangling
136* Fix typo: flexability
137* Review tweaks
138* Drop support for Python 2.6 and 3.2
139
1401.9.0
141-----
142
143* Release 1.9.0
144* Missed one
145* 19.4.1 refers to importlib machinery. Avoid that
146* See if setuptools 19.5 is bad
147* PIP\_VERSION is used by pip itself
148* Correct spelling of 'less than 8', maybe
149* Use only pip 7.\* on pypy3 & py3.2
150* Longer timeout not necessary
151* NEWS update
152* Handle case where Deferred fires after timeout
153* Explicitly separate fake stop method
154* Lint & copyright
155* NO\_RESULT -> has\_no\_result
156* Make twistedsupport a package
157* Rename \`successful\` to \`succeeded\`
158* Improve NEWS
159* Conditionally import matchers
160* Use non-inplace install and add a comment
161* New module for twisted support code
162* Minor documentation tweaks
163* Make no\_result a constant
164* Style & documentation tweaks from review
165* Review tweaks
166* Import extract\_result from correct location
167* expectThat works under AsynchronousDeferredRunTest
168* Correct string literal syntax
169* Avoid .format
170* Give up on some TODOs
171* Maybe we need to install our thing?
172* Add requirements for readthedocs
173* Move non-matcher code to \_deferred
174* Nicer links
175* Link to Twisted API docs
176* More todos
177* Documentation with examples
178* Pass the Deferred to the handlers
179* Docstring formatting
180* Use \_on\_deferred\_result in \_NoResult
181* Make \_on\_deferred\_result transparent to Deferred
182* Extract common Deferred logic
183* Use same error messages as Twisted
184* Matcher for Deferreds that have failed
185* TODOs & XXXs
186* successResultOf equivalent
187* Docstring formatting
188* Docstring
189* Move formatting to exception
190* Extract \`extract\_result\`
191* Matcher for no result
192* Actually use \`skipException\`
193* NEWS update
194* Suppress skip traceback based on skipException
195* Deprecate Python 2.6
196* Actually use pformat in errors
197* Deterministic test
198* NEWS update
199* NEWS update
200* Factor out counting
201* ids has no apostrophe
202* Lint
203* Collect all duplicate test id's before raise
204* Document checking release milestone before release
205* Don't need our own assertRaisesRegexp
206* Clarify the tests
207* Add assertRaisesRegexp method
208* Document early evaluation of details
209* Update NEWS
210* Deprecate TestCase.skip
211* Deprecate \_BinaryMismatch.{expected,observed}
212* Make sure reference and actual align
213* Put expected on the right for binary mismatch
214* Fix typo
215* Support Python 3.5, announce deprecation 3.2
216* API docs for deferredruntest
217* Need Deferred reference
218* Remove scare warnings from deferredruntest
219* Documentation tweaks
220* Move Twisted docs to separate file
221* Better error message for MatchesListwise
222* NEWS update
223* Clarify some things
224* Move \_cleanups reset to \_reset
225* Rewrite patch tests using make\_test\_case
226* \`throw\` helper
227* Rewrite addCleanup tests in terms of make\_test\_case
228* Use method for value, to avoid \`self\` weirdness
229* Move useful matchers to helper module
230* Move unique\_id\_gen to reset
231* Clean up comments
232* No need for special case
233* Get pre\_set\_up & post\_tear\_down from scenario
234* Spell setUp consistently
235* Allow pre setUp & post tearDown to be set
236* Complete suite of tests
237* Encapsulate construction
238* Start to use generated behaviors
239* Wrap the constructor, hide the class
240* Handle more test bodies
241* Begin implementing full matrix
242* Easy review comments
243* 15.5.0 claims to support Python 2.6 but does not
244* Run tests on last Twisted version to support 2.6
245* Latest Twisted doesn't run on Python 2.6
246* Non-deterministic test case
247* Simplify cleanup code
248* Rename all\_sample\_cases\_scenarios to deterministic\_sample\_cases\_scenarios
249* Treat tear down failure as a scenario
250* Begin to write scenario-based tests
251* Split run twice tests to separate case
252* Acquire testscenarios as a dependency
253* Fix travis :(
254* Add testscenarios for use by tests
255* Handle failure in tearDown
256* Test \_run\_teardown, rather than tearDown
257* Allow tests to be run twice
258* Don't use private APIs
259
2601.8.1
261-----
262
263* Update NEWS for 1.8.1
264* Hide TestRecord and StreamToTestRecord
265* Old-fashioned set syntax
266* Abstract text\_or\_bytes
267* Add pyrsistent dependency to Travis CI
268* Change PRecord to PClass
269* Move test\_dict\_to\_case near StreamToDict
270* Don't use StreamToDict internally
271* \_streamer -> \_hook
272* StreamSummary with composition, not inheritance
273* Extract StreamToTestRecord base class
274* Move \_make\_content\_type closer to where it is used
275* Put to\_test\_case logic on TestRecord
276* Make \_status\_map persistent
277* Move test\_dict\_to\_case closer to test\_dict definition
278* Remove temporary variable 'case'
279* Extract got\_file
280* Extract got\_timestamp function
281* Move creation logic to TestRecord itself
282* Actually use TestRecord internally
283* Extract methods for making and updating record
284* Extract \_make\_content\_type
285* Use \`case\` consistently, over \`\_inprogress[key]\`
286* Use name for interim states
287* Aspirational documentation
288* Remove VWS
289* Update PlaceHolder indentation
290* Restore & deprecate domap
291* Spell out \`f\` and \`xs\`
292* Drop \`\_\_metaclass\_\_\` declaration
293* Document confusing \`domap\`
294* Remove duplicate implementation of method
295* Allow event\_log to be passed to result doubles
296* Fix lint in testresult.real
297* Lint clear-up
298* Uncap test matrix entries for modern Twisted
299* Fix Travis matrix.include
300* Only run Twisted tests on Python 2
301* Test with Twisted 13.0.0/15.2.0
302* Port twisted.deferredruntest to Twisted >= 15.1.0
303* Update hacking documentation
304* Fix tests with unittest2 1.1.0 and higher
305* Programmatically declare test dependencies
306* Fix the call to the parent setup
307
3081.8.0
309-----
310
311* Release 1.8.0
312* Switch to pbr as a build system
313* Add some custom matchers to make deferred log tests more readable
314* Simplify AsynchronousDeferredRunTest.\_run\_core's StringIO handling
315* Rewind the deferred test log before attaching it
316* Open 1.8.0 for dev
317* Release 1.7.1
318* Clamp Sphinx below 1.3 for travis on pypy3/3.2
319* Fix pypy3 tests by using ceil when reporting duration
320* Fix building universal wheels on Python 3
321* Open next version
322* Release 1.7.0
323* Fix output of empty attachments
324* Open 1.7.0 again
325* Bug #1430076 fix installing when extras is not installed
326* Opening 1.7.0 for development
327* Release 1.6.0
328* Overhaul exception reporting
329* Release 1.5.0
330* Show import error details
331* Release 1.4.0
332* Fix setUpClass upcalls on Python 2.6
333* Release 1.3.0
334* Build universal wheels
335* Fix setup.py to work without six installed
336* Fix skipping setUpClass with self.skipException
337* Release 1.2.1
338* Use a PEP-440 dev version instead of snapshot-
339* Express our required unittest2 version
340* Opening 1.2.1 for development
341* Release 1.2.0
342* Expand test matrix to include Python 3.4 and pypy3
343* Pin Pygments below 2.0 for our 3.2 build
344* Use unittest2 TestProgram implementation
345* Update testtools.compat.\_\_all\_\_
346* Make discover run the same tests as 'make test'
347* Improve support for discovery on testtools.tests
348* Fixup travis. OOPS
349* Depend on unittest2
350* We now publish wheels of testtools
351* Fixed docstrings in content.py
352* Make text\_content more explicit about the types that it accepts
353* Fix unit tests which failed under pypy due to a change in the way tracebacks were reported
354* Release 1.1.0
355* Fix masking of fixture.setUp errors
356* Openning 1.0.1 for development
357* Release 1.0.0
358* Fix handling of uncatchable exceptions
359* Fix issue where using the skip\* family of decorators still ran the setUp and tearDown test methods
360* Document backwards compatibility policy
361* Document release pre-requisites
362* Opening 0.9.40 for development
363* Unbreak discovery from 0.9.38
364* Opening 0.9.39 for development
365* Bumped version number for release
366* Backport fix for load\_tests in package modules
367* Implement discover import error detection on 2.6
368* Fix broken links to old mumak.net documentation
369* Go back to capitalized testtools for now
370* Fix rST error in \`StreamResult\`
371* Initial cut of API changes
372* Ignore all the things
373* Some minor tweaks
374* Opening 0.9.38 for development
375* Release 0.9.37
376* Honour stdout on TestProgram more fully
377* Handle content objects better
378* Opening 0.9.37 for development
379* Release 0.9.36
380* Error if setUp or tearDown are called twice
381* Revert back to explicit test identification
382* Remove newline in url that broke the link in the docs
383* abandoned pull request revived to comply with comments in review
384* Raise a TypeError when text\_content is passed bytes, so we get an error as early as possible
385* Added failing test for python 3.4 unittest.expectedFailure decorator changes
386* Add optional message to assert(Not)In
387* Opening 0.9.36 for development
388* Fix automation harder
389* Release 0.9.35
390* Use a credentials file rather than global keyring
391* Don't try to release 'NEXT'
392* Add expectThat method to testtools.TestCase
393* Build docs as part of the Travis build
394* Add assert\_that NEWS entry
395* Copy assertThat docstring on to assert\_that
396* Add assert\_that function documentation
397* Move assertThat tests to separate module and apply them to assert\_that as well
398* Create assert\_that function and use it from TestCase.assertThat
399* Add NEWS entry for Python 2.4/2.5 code path removal
400* Use explanatory functions for gnarly exception handling logic
401* Use super correctly
402* Remove workaround for getincrementaldecoder not being in 2.4
403* Remove documentation suggestion that we support anything older than 2.6
404* Revert "Workaround 2.4 threading bug in test\_spinner."
405* Use a context manager as suggested by a comment
406* Don't support Python 2.4 test method naming
407* Remove Python 2.4 deprecation warning special-casing
408* Remove (always skipped) test for string exceptions
409* Remove another Python 2.4 special case
410* Remove and relocate some now un-needed compatibility functions
411* We no longer need to handle Python 2.4's KeyboardInterrupt specially
412* Remove trailing whitespace
413* We no longer need to handle string exceptions in TestCase
414* Use proper super call in MismatchError
415* Open 0.9.35 for dev
416* Release 0.9.34
417* Fix test\_bom Python 3.3 test failure
418* In Python 3.3, if there are duplicate test ids, tests.sort() will fail and raise TypeError
419* Add 'force\_failure' feature to testtools.TestCase
420* Add testtools.StacktraceContent
421* Fix NEWS item sorting
422* Indicate failed imports in list-tests
423* Be more paranoid about list-tests behaviour
424* Cleanup sys.modules correctly in test\_run
425* run network test on the loopback interface only
426* Export AnyMatch properly
427* Some notes on discussing changes
428* Fix Typo in StreamResult docs
429* Export testtools.content.json\_content properly
430* Release 0.9.33
431* Fix StreamSummary counting of testsRun
432* Fix NEWS formatting
433* Comment about disabled test
434* Add StackLinesContent, reimplement TracebackContent to use this new class
435* Remove unused code
436* Added missing line in NEWS file for features merged previously
437* Refactor testtools.compat.\_format\_exc\_info into two separate functions
438* Add the 'addDetailUniqueName' method to TestCase
439* Fix a KeysEqual bug
440* Setup gerrit metadata
441* Fixed a few typos in the documentation related to IsDivisibleBy
442* Opening 0.9.33 for development
443* Prepare for 0.9.32
444* Disable hiding internal frames within user frames
445* Fix TestSkipped importing with unittest2
446* Update NEWS
447* Clarify docstrings for skipIf and skipUnless
448* Move HasLength doc to the correct section
449* Clarify docstrings for skipIf and skipUnless
450* fix a typo
451* adjust HasLength doc position
452* Opening 0.9.32 for development
453* Release 0.9.31
454* Teach ExpectedException how to annotate errors
455* Opening 0.9.31 for development
456* Release 0.9.30
457* Make epytext documentation work
458* Fix doc builds
459* DecorateTestCaseResult was missing some used attributes in its exclusion of forwarded attributes
460* ExtendedToStreamDecorator wasn't using kwargs consistently
461* Allow customisation of testtools.run --list-tests behaviour
462* Add a StreamResult Router
463* Fix assertRaises when the exception has a metaclass
464* Add a StreamResult safe for use in threaded/concurrent code
465* Add a timestamping StreamResult
466* Fixed SyntaxError when installing via Python 3
467* Add StreamTagger, for tagging StreamResult events
468* Add an adapter to adapt StreamResult event streams into ExtendedTestResult
469* Add an adapter to convert ExtendedTestResult to StreamResult
470* Add a dedicated interface for controlling an in-progress TestRun
471* Add StreamSummary to generate summary statistics and capture failures
472* Provide a loosely typed buffer layer for simple processing of completed tests
473* Adds a CopyStreamResult which copies StreamResult events to multiple outputs
474* Adds a recording StreamResult for writing tests with
475* This defines a new sort of TestResult, StreamResult
476* Add a helper for decorating the result object given to \`\`case.(\_\_call\_\_/run)\`\` - DecorateTestCaseResult
477* Add support for timestamp events to Placeholder objects
478* Placeholder couldn't hold tags, which limits its use
479* The error message for setUp and tearDown upcall errors was broken on Python 3.4. (Monty Taylor, Robert Collins, #1140688)
480* The ContentType repr() incorrectly used , instead of ;
481* Add NEWS entry for pypy fix
482* Make test pass with PyPy
483* Handle broken test run() methods in ConcurrentTestSuite
484* Ignore .testrepository more effectively
485* Opening 0.9.30 for development
486* Release 0.9.29
487* Report filenames in upcall errors
488* Further fix to unicode\_output\_stream
489* Fix handling of io.StringIO in unicode\_output\_stream
490* Opening 0.9.29 for development
491* Release testtools-0.9.28
492* Add travis-ci continuous integration configuration
493* Fix epytext for \*args
494* Add a nosetests attr-like extension to enable more ways of filtering tests
495* Delete Python 2.4 only code
496* Instructions for tagging with git
497* Be clear on when HasLength passes or fails
498* Code quote \*args and \*\*kwargs
499* Fix minor rST error
500* Whitespace correction
501* Correct URL for testing cabal
502* Refer to Github, not Launchpad
503* Remove logic to get version from bzr revno
504* Code is now hosted on Github
505* Use .gitignore rather than .bzrignore
506* Rename README to README.rst
507* Refer to LICENSE, rather than README
508* Opening 0.9.28 for development
509* Release 0.9.27
510* \* New matcher \`\`HasLength\`\` for matching the length of a collection.   (Robert Collins)
511* \* New matcher \`\`HasLength\`\` for matching the length of a collection.   (Robert Collins)
512* \* New matcher \`\`MatchesPredicateWithParams\`\` make it still easier to create   adhoc matchers. (Robert Collins)
513* \* We have a simpler release process in future - see doc/hacking.rst.   (Robert Collins)
514* Release 0.9.26
515* Brown paper bag fix: failed to document the need for setup to be able to use extras. Compounded by pip not supporting setup\_requires
516* Release 0.9.25
517* \* \`\`python -m testtools.run --load-list\`\` will now preserve any custom suites   (such as \`\`testtools.FixtureSuite\`\` or \`\`testresources.OptimisingTestSuite\`\`)   rather than flattening them.   (Robert Collins, #827175)
518* Update docs about 2.4 and 2.5 compatability
519* \* Testtools will no longer override test code registered details called   'traceback' when reporting caught exceptions from test code.   (Robert Collins, #812793)
520* \* Testtools now depends on extras, a small library split out from it to contain   generally useful non-testing facilities. Since extras has been around for a   couple of testtools releases now, we're making this into a hard dependency of   testtools. (Robert Collins)
521* Post-release merge of 0.9.24
522* Release 0.9.24
523* Fix grammatical error
524* \* \`\`testtools.run discover\`\` will now sort the tests it discovered. This is a   workaround for http://bugs.python.org/issue16709. Non-standard test suites   are preserved, and their \`\`sort\_tests()\`\` method called (if they have such an   attribute). \`\`testtools.testsuite.sorted\_tests(suite, True)\`\` can be used by   such suites to do a local sort. (Robert Collins, #1091512)
525* \* \`\`ThreadsafeForwardingResult\`\` now defines a stub \`\`progress\`\` method, which   fixes \`\`testr run\`\` of streams containing progress markers (by discarding the   progress data). (Robert Collins, #1019165)
526* \* \`\`testtools.run discover\`\` will now sort the tests it discovered. This is a   workaround for http://bugs.python.org/issue16709. Non-standard test suites   are preserved, and their \`\`sort\_tests()\`\` method called (if they have such an   attribute). \`\`testtools.testsuite.sorted\_tests(suite, True)\`\` can be used by   such suites to do a local sort. (Robert Collins, #1091512)
527
5280.9.23
529------
530
531* Release 0.9.23
532* \* \`\`run.TestToolsTestRunner\`\` now accepts the verbosity, buffer and failfast   arguments the upstream python TestProgram code wants to give it, making it   possible to support them in a compatible fashion. (Robert Collins)
533* Add a Python 3 Trove entry
534* Restore test suite passing status on Python 3
535* Restore test suite compatability with Python 3.x
536* Adjust trunk for TestToolsTestRunner change
537* New matcher, AnyMatch
538* \* \`\`testtools.run\`\` now supports the \`\`-f\`\` or \`\`--failfast\`\` parameter.   Previously it was advertised in the help but ignored.   (Robert Collins, #1090582)
539* \* \`\`run.TestToolsTestRunner\`\` now accepts the verbosity, buffer and failfast   arguments the upstream python TestProgram code wants to give it, making it   possible to support them in a compatible fashion. (Robert Collins)
540* NEWS bump
541* New matcher: AnyMatch
542* Post 0.9.22 release fixup
543* Release 0.9.22
544* \* \`\`content\_from\_file\`\` and \`\`content\_from\_stream\`\` now accept seek\_offset and   seek\_whence parameters allowing them to be used to grab less than the full   stream, or to be used with StringIO streams. (Robert Collins, #1088693)
545* Typo in doc and a fix for TestProgram being constructed without an explicit testRunner argument
546* Not zip\_safe
547* Post-release cleanup
548* Release 0.9.21
549* Re-expose DirContains
550* Post-release cleanup
551* Release 0.9.20
552* Expose new dict matchers
553* Expose dict matchers
554* Remove a dead line of code in compat.py
555* Bump for release
556* Fix Python 3.3 failures and make tests pass in release tarball
557* Address mgz's comment
558* Broaden the check to include PermissionError
559* NEWS update
560* Fix all of the cosmetic Python 3.3 failures
561* Remove HACKING and MANUAL from MANIFEST, as they are now in docs. Should silence warnings about missing files
562* Include matchers
563* Oops. Should have been committed
564* Bump to 0.9.18 final
565* Prep for 0.9.18 release
566* Release 0.9.17
567* Release 0.9.17
568* Correct handling of text vs bytes in json content type (mgz)
569* Fix --list (lifeless)
570* \* \`\`python -m testtools.run discover . --list\`\` now works. (Robert Collins)
571* Epytext fixes
572* Fix epytext errors
573* Update documentation to refer correctly to supported Python versions
574* More documentation updates
575* Update overviews
576* Update the README for new Python versions
577* Split testtools.matchers into several submodules
578* Rename core to impl
579* NEWS entry
580* More \_\_all\_\_ stuff
581* Add interface again
582* Rationalize imports
583* Clear out \_\_init\_\_
584* Move MatchesPredicate to \_higherorder
585* Move MatchesRegex to \_basic
586* Split up the tests
587* Massive split
588* Flakes
589* Move filesystem tests
590* Import all from basic
591* Move the tests
592* Move basic matchers into separate module
593* Notes
594* Move the filesystem matchers out
595* Move the tests to match the module
596* TODOs
597* Create a package for matchers, move all of the existing matchers into \_core and expose them all from the package's \_\_init\_\_
598* Post-release bump
599* Release 0.9.16
600* Fix up  SameMembers
601* Fix a glitch
602* Include what's missing and what's extra
603* Move \_format out
604* Restore properly
605* Get the other matcher passing the tests
606* Explicitly encode JSON data
607* Drop support for 2.4 and 2.5
608* Add dict matchers.  Merges dict-matcher
609* Rename the matchers
610* Make it more clear what \_CombinedMatcher is
611* Rename dict of matchers to expected
612* Heaps of docstrings
613* Restore accidentally deleted docstring
614* Move and rename helper
615* Be a little more explicit
616* Docstrings
617* Save code through subclassing
618* Remove a tiny bit of duplicate code
619* Revert keys equal
620* Makes more sense to me this way. Rename PrefixMismatch to PrefixedMismatch. Rename AnnotatedMismatch to PostfixedMismatch, alias to original name
621* Add a thing like MatchesAll but that takes a dict, make the new dict matchers use that
622* Back to being more data driven
623* Clean up
624* Define in terms of matchers
625* Try another approach
626* More explicit
627* Extract something more general out of KeysEqual
628* Copy the rule-based implementation
629* Return the helpers to matchers.  Try a more rule-based implementation
630* SuperDict!
631* Add a subdict
632* Less repetition
633* Explain what I mean
634* Drop a couple of XXXs
635* Make things clearer, maybe
636* Move to helpers
637* Spell 'Extra' and 'Missing' differently
638* Last minute TODO notes
639* Maybe a little simpler
640* Simplify implementation by introducing more mismatches
641* Show mismatched keys nicely
642* Simplify by creating a couple of slightly weird helper functions
643* Drop the 'Differences' header from MismatchesAll
644* More detailed information about missing & extra
645* Initial cut of dict matcher.  Really poor error reporting.  No docstrings
646* Fix JSON tests
647* Fix some tests to account for new py3k quirks
648* Fix json\_content helper on pythons with a unicode native str type
649* Fix JSON content type test to not expect charset param
650* Reraising of exceptions in Python 3 is more reliable. (Martin [gz])
651* Simply reraise from the exception instance on py3k
652* Only assert that a reraised traceback has the original as a tail
653* Add tests for compat.reraise details that fail on py3k
654* Add json\_content
655* Don't specify encoding for JSON.  Already known to be UTF8
656* Add a JSON content type
657* Add a json\_content helper
658* New matcher, SameMembers
659* Hopefully a nice error message
660* Implement \_\_str\_\_
661* Guarantee unhashable things can be handled
662* Initial cut of SameMembers
663* OK, it wasn't r261 that broke Jenkins, but rather, Jenkins broke between r260 and r261. Great
664* r261 broke Jenkins. Reverting
665* Add new matcher, ContainsAll. Thanks rvba
666* Open 0.9.16 for business
667* Clarification in hacking.rst
668* 0.9.15 ~~~~~~
669* \`\`ThreadsafeForwardingResult\`\` now forwards global tags as test-local tags, making reasoning about the correctness of the multiplexed stream simpler. This preserves the semantic value (what tags apply to a given test) while consuming less stream size (as no negative-tag statement is needed). (Robert Collins, Gary Poster, #986434)
670* Refactor tests.  Improve doc
671* Add ContainsAll matcher
672* Fix doc
673* Announce intentions
674* Make sure the tests run & pass in Python 2.4 as well
675* Make the tests pass in Python 2.4 again
676* Restore Python 3 compatibility.  Thanks Benji!
677* use a better name
678* restore python 3 compatability
679* Don't leak tags
680* Clear the tags once we send them
681* Failing test to reproduce the bug
682* A million tests for threadsafeforwarding result, and a bug fix
683* ConcurrentTestSuite now takes a wrap\_result parameter
684* Better docs
685* Parametrize wrap\_result, rather than relying on inheritance
686* Documentation tweaks
687* Add a TestResultDecorator that tags every test
688* pyflakes
689* Add a hook for wrapping the per-thread result
690* Initial cleanup
691* Test local tag support
692* Rename the method to avoid negatives and hopefully increase clarity
693* More tests for global tags, addressing a logic bug
694* Start testing TSFR's tag support
695* Actually test the threadsafe bit, sort of
696* Split up test\_forwarding\_methods
697* Make \_merge\_tags a function
698* Change the API so that merge\_tags takes a tuple of (new, gone) for both parameters
699* rewrite the tags\_helper test to be a little clearer
700* Make the event log when making the result
701* Make the results in the tests, rather than setUp
702* Fix the indentation!
703* Add test-result-decorator
704* Add test-by-test-result
705* Change get\_parent() to simple attribute access
706* Better tag handling
707* Add TestByTestResult
708* Bring over TestResultDecorator
709* Fix typo. Thanks Gary
710* Handle the nesting behaviour that subunit describes
711* Check that startTestRun always resets tags
712* Begin to have proper interface tests for tag support
713* Documentation
714* Remove the layer of abstraction
715* Drop the function-based approach
716* A class-based approach
717* Abstract the methods in the tests so we can experiment with a different approach
718* Simplify
719* Make it possible to get the parent context
720* Cleaner, shorter
721* Allow for child contexts
722* Externalize tag support as a bit of an experiment
723* Remove an incorrect part of the testing contract for Python 2.7 and 2.6
724* Delete a redundant test added during this branch
725* Simplify \_add\_reason a little
726* \* \`\`PlaceHolder\`\` and \`\`ErrorHolder\`\` now support being given result details.   (Robert Collins)
727* Notes for 0.9.14
728* Restore private method that subunit relies on
729* Restore \_exc\_info\_to\_unicode so that subunit can continue to work with latest testtools
730* Make the tests pass on Python 3
731* Release 0.9.13
732* Move stack trace logic to TracebackContent, simplify the way we handle verbose tracebacks. FullStackRunTest no longer aborts the test run if a test raises an error
733* More NEWS
734* NEWS
735* Tweaks
736* Copyright. Flakes
737* Fix a glaring bug where any test that raised on FullStackRunTest would abort the test suite
738* Use TracebackContent as the point to pivot whether or not we hide stack
739* Have everything use TracebackContent
740* Give TracebackContent the ability to format exceptions itself, rather than delegating to TestResult
741* Use the new helper
742* Add as\_text, a content helper
743* I think this is the right thing to do
744* Asynchronous tests no longer hang when run with triial
745* Make sure that we actually capture the list of observers, rather than just storing a reference
746* assertRaises includes the function name in its error message
747* Document
748* In the NEWS
749* Move to testcase so it doesn't appear in stack traces
750* Extract Nullary and move it into helpers
751* Format properly
752* NEWS update
753* Make sure the repr of the callable passed to assertRaises is included in the error message generated when assertRaises fails
754* \`\`ThreadsafeForwardingResult\`\` no longer includes semaphore acquisition time in the test duration (for implicitly timed test runs). (Robert Collins, #914362)
755* \`\`MultiTestResult\`\` supports the \`\`tags\`\` method. (Graham Binns, Francesco Banconi, #914279)
756* Fixed ThreadsafeForwardingResult so that it supports tags
757* Added a test for general tags()
758* Rob says MultiTestResult is fixed
759* Refactored TestResult.tags() and removed unnecessary reimplementations. Actually implemented tags() in the base class, too
760* Added tags() stubs to various TestResult implementations
761* Test suite fixes for Python 3 and pypy
762* Correctly skip test\_real\_path if os.symlink is unsupported
763* Silly dancing over a single space difference in SyntaxError formatting depending on codec implementation
764* Seems pypy forgets to lower() the cookie encoding name
765* Avoid fixed-in-py3k-only resource usage bug with reading .tar.gz files
766* Close files properly in test\_from\_stream\_eager\_loading
767* Respond to helpful review suggestions from Robert
768* End user docs
769* Allow passing arbitrary matcher to FileContains
770* DirContains now takes a matcher also
771* Docstrings for MatchesPredicate
772* Many new matchers
773* Remove TODO list
774* NEWS update
775* More doc tweaks
776* Doc tweaks
777* Lots of docs
778* More matchers still
779* Add SamePath
780* Add tarball matcher
781* Documentation
782* Add a first\_only option to MatchesListwise
783* Remove heaps of boiler plate by using MatchesPredicate
784* Add a matcher that just takes a predicate and a message
785* Add a short-circuit option to MatchesAll
786* Add FileExists and correct tests for DirExists
787* Even more tests
788* Initial import of matchers from pkgme, plus some tests and some edits
789* Include version number in the snapshot version, so virtualenv can work proper
790* Add the version to the snapshot string
791* Hide even more of the stack by default
792* Handle earlier Python versions
793* Python 3 work
794* Hide stack from MismatchErrors
795* Copy in exc\_info\_to\_string, rather than the funky monkey patching
796* Better repr for results
797* Better repr for results
798* Align actual and reference = symbols
799* Prepare for release
800* Test that not passing multiline to text\_repr defaults based on input
801* Add third state to multiline argument of text\_repr and comment the internal logic
802* Add cautions about unprintable strings to Mismatch documentation
803* Fix spelling error noted in review by jml
804* Extra tests to ensure multiline quoting is correct on Python 3
805* Avoid potential bytes and unicode mixing with DocTestMismatch on Python 2
806* Fix MatchesRegex mismatch description with a little transcoding dance
807* Make StartsWith and EndsWith stringify more like other matchers
808* Use text\_repr for DoesNotStartWith and DoesNotEndWith describe methods
809* Hack over bump with bytes till things can be rewritten in a better way
810* Test and fix \_BinaryMismatch.describe long forms using text\_repr
811* Remove now unused to\_text alias for unicode string type from compat
812* Make MismatchError stringification return appropriate types on Python 2
813* Use (possibly extended) repr rather than "%s" for matchee in verbose form of MismatchError
814* Messy first pass at implementing text\_repr
815* Correct a couple of the examples for text\_repr tests
816* Tests for repr function to replace broken stringification schemes in matchers
817* Tests can be run independently now
818* Fix documentation to refer to fromExample, rather than non-existent from\_example
819* HACKING updates
820* Hide the stack using a RunTest method
821*  \* Migrate assert\* methods to use matchers  \* Add optional message parameter to assertThat
822* Remove the word 'present', which is unnecessary
823* Review changes
824* \*  \`\`MatchesException\`\` now permits a tuple of types rather than a single type   (when using the type matching mode).  (Robert Collins)
825* Port assertIsInstance to matchers
826* Add an IsInstance matcher
827* assertNotIn using assertThat
828* Reduce spelling of assert\* functions which call assertThat
829* \* assertThat accepts a message which will be used to annotate the matcher. This   can be given as a third parameter or as a keyword parameter. (Robert Collins)
830* More convert-to-matchers tweaks
831* Migrate assertIn to be matcher based
832* New matcher Contains
833* Some new docs
834* Take parameters
835* Docstring
836* Use the right level API to check the error output
837* NEWS
838* Add an example
839* Correctly handle unicode output from doctest example in DocTestMatches
840* NEWS update
841* Trailing whitespace nit
842* Implement \_NonManglingOutputChecker class to work around doctest problems in recent Python versions
843* Correct tests to expect unicode from describe and Python 3 str
844* Oh, and the bug itself
845* assertThat docs & NEWS update for change
846* Add MismatchError, with tests. Change assertThat to raise MismatchError rather than AssertionError. Fixes bug 804127, I hope
847* Add 'to\_text', a compatibility helper that turns an object into a unicode string
848* Failing test
849* Documentation for placeholders
850* Don't include a symlink to NEWS, instead generate docs on the fly
851* Generate news symlink when making docs
852* Ahem
853* Don't depend on fixtures to run the tests
854* Nicer regex error message
855* Make it so the test suite will run without fixtures installed
856* Tests don't run if fixtures is not there
857* News update
858* Nicer error message for regex fail
859* ExpectedException now more useful
860* Fixes for Python 2.4, 2.5 & 3.x. Add a build script that runs tests against all versions. Make a 'scripts' directory for all build scripts
861* Add reraise helper
862* NEWS & docs
863* Show that we get the mismatch if passed in
864* ExpectedException will now match any exception of the type by default, and can take any kind of matcher
865* Add an option to AfterPreprocessing to hide the extra annotation
866* Move update-rtfd script in
867* Add a link to the API docs. Just in case
868* Export 'reactor' to tests running with Twisted
869* More robust against slow computers
870* For some reason, using string here caused the subunit stream to get corrupted
871* Content takes bytes, not text
872* Not sure if this is correct, but it makes the test pass
873* Python 3 changes
874* A version that actually works
875* Add helper
876* Annotations and fixes
877* Remove the '.' from the name so jenkins doesn't think that they are sub-components
878* Use the repr of the exception object, rather than specifying the string explicitly. Makes it work on Python 2.4
879* Missed one
880* Can't use 'with'
881* Make a note
882* Might as well make it runnable
883* Fix for when tests are run from other directory
884* Some docs
885* Add a script that runs the tests against all installed Pythons
886* Move \_lp\_release into 'scripts'
887* Make the directory
888* Update NEWS to reflect mgz's initial work on stack frame bug
889* Update NEWS to reflect mgz's contribution
890* Add something to update rtfd docs
891* Include NEWS in generated docs
892* Tweaks to make NEWS a little nicer in generated docs
893* Link NEWS from Sphinx docs
894* Make assertThat errors less verbose by default
895* Allow MatchesException to take any matcher
896* Don't show testtools' own stack frames when showing errors in test runs
897* Switch to using a FunctionFixture, per Rob's suggestion
898* Add a new matcher \`\`AllMatch\`\`
899* Change gather\_details to take dicts, not detailed objects
900* Correct the spelling for AfterPreprocessing
901* Micro-optimize
902* Fix typo
903* Change gather\_details to take a dict, rather than detailed objects
904* Docstring update
905* Make the error message a little better
906* Oh, actually, make it work. Update the description tests
907* Update description test
908* Allow value\_re to be a matcher
909* Use MatchesRegex internally in MatchesException. Change MatchesRegex to have a nicer error message
910* Fix test\_traceback\_formatting to work correctly with Windows
911* NEWS update
912* Completely unused code
913* Direct tests for assertThat output
914* No need to be so verbose about the matcher. Trust the mismatch to know how to display the error
915* NEWS entry
916* Export reactor to the test
917* More NEWS
918* Docs and export
919* Document FixtureSuite
920* Tests for safe\_hasattr
921* Move safe\_hasattr
922* Be explicit in our higher level tests about what levels of the stack we want to see
923* Make sure we show testtools own stack levels during run
924* Use matchers for better tests
925* Bring docs up to date with new spelling
926* NEWS update & comments
927* Rename AfterPreproccessing to AfterPreprocessing, keeping a backward compatibility shim
928* Add FixtureSuite and a fixture for hiding/showing the debug levels of stack
929* NEWS and docs
930* Add a new matcher
931* Cleanups
932* Helper method to show and hide test results
933* Don't re-export from helpers
934* Add some more convenient ways to match stuff
935* Docs and news update
936* Add byMatcher
937* NEWS and doc update
938* Hide many testtools frames on the stack
939* Docs & NEWS update
940* Add a 'byEquality' helper
941* Display less boilerplate in test failures and errors
942* Rename test\_testtools to test\_testcase for greater consistency
943* Revert previous change, since it breaks the test suite
944* Manually merge in the diff
945* Incrementally improve DocTestMatchers handling of unicode
946* Correctly display non-ASCII unicode output on terminals that claim to have a unicode encoding. (Martin [gz], #804122)
947* Split the compat test
948* Automate the Launchpad part of the release process
949* Fix test on Python 3
950* NEWS update
951* Make it live
952* Add some more checking before actually releasing to prevent embarrassing mistakes
953* Close the milestone after releasing
954* Untarget from milestone if not fixed
955* Remove the dry run support
956* Integrate the new release script into docs & Makefile
957* Many fixes based on testing against staging
958* Clean up
959* Wrap unicode streams on Python 2 so writing as well as printing unicode to them works
960* Use the right APP\_NAME
961* Some refactoring
962* Instrument more. Create the new milestone. Mark bugs as fixed
963* Get the release name from NEWS
964* More constants
965* Relatively known good state
966* Correctly spell next
967* Restore matchers
968* Move the "Run tests" line closer to OK
969* Incomplete fix for using unicode with DocTestMatches, needs doctest.\_indent issue fixing still
970* Oh man I hope this works
971* Python 3 fixes. Test suite now runs with Python 3
972* Add public matchers to testtools.matchers.\_\_all\_\_
973* Also specially mark up tracebacks when we convert them to strings
974* Work with Python 3
975* NEWS update
976* Remove XXX
977* Update documentation
978* Combine single-line attachments
979* Assume that 'traceback' is the special attachment
980* Support the special attachment in multiple versions
981* Aim closer at the actual results we want
982* A more integration-y test for our current behaviour
983* Basic support for a "special" text attachment
984* Factor out text attachment formatting
985* Don't have a line below the final text attachment
986* Copyright
987* Don't say "Text attachment"
988* Reduce the amount of duplicated code
989* Add a new Matcher, GreaterThan, to complement LessThan
990* API docs
991* NEWS entry
992* Fix up whitespace problems
993* Add a convenience method to Annotate that just passes through when there's no message. Make the built-in assertions use that
994* Use Is, rather than Equals
995* Flakes
996* New convenience methods, assertIsNone and assertIsNotNone
997* NEWS update and a formatting cleanup
998* \* Add convenience methods assertIsNone and assertIsNotNone
999* \* New GreaterThan matcher
1000* 0.9.11 released
1001* release 0.9.11
1002* NEWS entry
1003* LICENSE vs README normalization
1004* Add myself to the authors list
1005* Add tests for error\_callback
1006* Add an error\_callback parameter to try\_import and try\_imports
1007* A bunch of improvements to detail & fixture handling, courtesy Gavin Panella
1008* Hide copy\_content, it's internal only
1009* Expose gather\_details from \_\_all\_\_
1010* NEWS update, make sure Gavin's in the credits
1011* Improve copy\_content()'s docstring
1012* Fix closure error when gathering multiple details from a fixture
1013* Gather details from fixtures that fail to set-up
1014* Change gather\_details()'s signature and update the docstring
1015* Change TestCase.\_gather\_details() into a plain function so that it can be reused elsewhere
1016* Use super, rather than upcalling
1017* use super() in setUp and tearDown
1018* Thanks so much to mgz
1019* \* Additional compat helper for \`\`BytesIO\`\` for libraries that build on   testtools and are working on Python 3 porting. (Robert Collins)
1020* Add a BytesIO alias for use when writing bytes aware code
1021* Refix various problems that broke Python 3 support
1022* Land allenap's change to LessThan
1023* Update documentation for MatchesStructure, make it correct
1024* Another test for LessThan mismatch descriptions that reveals the order in which the expected and observed values appear
1025* Rewrite details\_to\_str as line-bsaed rather than char based
1026* Correct the message than LessThan() provides on mismatch
1027* Release 0.9.10
1028* Include the doc directory in sdist, making testtools installable from PyPI again (Tres Seaver)
1029* Get 'doc' included properly in sdist
1030* Some thoughts on what to do next
1031* Just list empty attachments, rather than demonstrate that they are indeed empty
1032* repr that I like better
1033* Another test for the current behaviour
1034* Make mismatches between big blocks of text easier to read
1035* Test current behaviour
1036* Test the current behaviour
1037* Delete unused mixin
1038* More factoring out
1039* Factor out some common methods into top-level functions
1040* Remove unused imports
1041* Things that would have made the release smoother
1042* Things that would have made the release go smoother
1043* Correct version
1044* NEWS update for the release
1045* Fix AnnotatedMismatch to correctly return details
1046* Use the decorator. Give the decorator a repr
1047* Docs!
1048* Add a MismatchDecorator
1049* Forward details from annotated mismatch
1050* Remove the decorators, correctly credit lifeless in the news file
1051* NEWS update.:
1052* Fix a typo
1053* Allow building snapshot when it's not a working tree
1054* API doc markup cleanups
1055* Slightly better markup
1056* Clean up errors
1057* Correct REST
1058* \* added basic documentation on how to use testtools with distutils
1059* \* Fixes TestCommand import and reexports it from the testtools package \* Adds a sample setup.cfg configuration for the distutils TestCommand   to demonstrate the proper usage of the command and so that   \`\`python setup.py test\`\` may actually do something useful by default
1060* Catch both NotBranchError /and/ NoworkingTree as different versions of bzr seem to raise a different error
1061* Catch NoWorkingTree rather than NotBranchError
1062* Support building a snapshot from something that is not a bzr working tree
1063* Tweaks for Jono's consideration
1064* Rename 'command' to 'distutilscmd'
1065* Rename 'command' to 'distutilscmd'
1066* Oops. "Kampka", not "Kampa"
1067* NEWS update
1068* Typo
1069* Cosmetic & legal cleanups
1070* Make the tests skip when fixtures is not installed, rather than raising NameError
1071* Use local variables instead of instance variables
1072* Copyright bump
1073* Actually run the new tests
1074* Style changes
1075* More tests for attach\_file, make lazy read work
1076* read\_now => lazy\_read, as per review
1077* Change the order of parameters to attach\_file
1078* Move attachFile from TestCase to be a standalone function
1079* Fix up the documentation
1080* Move Content.from\_stream to be content\_from\_stream
1081* Delete from\_text
1082* Copyright bump
1083* Clarify copyright: correct owners and dates
1084* Make something easier
1085* Clarify who they are
1086* Get it right
1087* More matchers than you can possibly imagine (mwhudson)
1088* Add stuff about them in the manual
1089* Some documentation for MatchesListwise
1090* Update NEWS
1091* Rename \`\`EachOf\`\` to \`\`MatchesListwise\`\`
1092* New ExpectedException class
1093* Update the manual
1094* NEWS for my change
1095* Increased clarity
1096* Tweaks
1097* Add option regular expression matching logic to MatchesException
1098* NEWS, copyright bumps, docstring
1099* Add \_\_future\_\_ import
1100* Add ExpectedException
1101* Fix some trivial API doc generation issues
1102* More fixes to epytext
1103* Fix some epytext failures
1104* Don't emit warnings on lucid
1105* \* Use unittest2 exception classes if available. (Jelmer Vernooij)
1106* Use unittest2 exception classes if available
1107* Update the README to point at the other docs, and clarify that the copyright is joint
1108* Re-export the eager loading convenience
1109* Add eager loading options to from\_file and from\_stream
1110* More documentation
1111* attachFile helper
1112* Update NEWS and MANUAL
1113* Remove duplication
1114* Basic convenience method for reading content from a file
1115* Make it a classmethod, and make text\_content one too
1116* Update NEWS
1117* Add a \`stream\_content\` helper
1118* Republish StringIO through compat to avoid repeated code
1119* PEP 8
1120* Mention the difference between Python 2.7's startTestRun and ours in the docstring
1121* Add all matchers to matchers \_\_all\_\_, fixing bug 692158
1122* Make sure all matchers are in matchers \_\_all\_\_
1123* Vastly improved documentation
1124* Fix reST and add overview to index<
1125* Use the overview document for the PyPI release
1126* Overview document for testtools
1127* Documentation for KeysEqual
1128* Actually document 'expectFailure', incorporating notes on testtools's deviance
1129* Update for startTestRun changes
1130* Changes -------
1131* 0.9.8 was released
1132* Release 0.9.8
1133* Tests will now pass on Python 2.6.4 : an \`\`Exception\`\` change made only in 2.6.4 and reverted in Python 2.6.5 was causing test failures on that version. (Martin [gz], #689858)
1134* Avoid issue with broken \_\_unicode\_\_ method on some Python 2.6 minor versions
1135* Workaround 2.4 threading bug in test\_spinner
1136* Avoid race condition in test\_spinner.TestRunInReactor.test\_clean\_running\_threads due to twisted threadpool not joining stopped workers
1137* update NEWS
1138* merge trunk
1139* add AfterPreprocessing
1140* \`\`assertIsInstance\`\` supports a custom error message to be supplied, which is necessary when using \`\`assertDictEqual\`\` on Python 2.7 with a \`\`testtools.TestCase\`\` base class. (Jelmer Vernooij)
1141* \`\`MismatchesAll.describe\`\` no longer appends a trailing newline. (Michael Hudson-Doyle, #686790)
1142* add MatchesSetwise
1143* add MatchesRegex
1144* add EachOf and MatchesStructure matchers
1145* merge no-newline-for-mismatchesall
1146* remove the final newline from the description of MismatchesAll
1147* merge my trivial fixes
1148* ignore .testrepository
1149* trivial test fix
1150* Support optional 'msg' argument to TestCase.assertIsInstance
1151* Fix bug 688724 by implementing 'all' for Python 2.4. (mgz)
1152* Expose 'all' from compat and implement it for Python 2.4
1153* Make use of StringIO in testtools.tests.test\_run Python 3 compatible
1154* Let stdout default to sys.stdout in TestProgram
1155* Use shiny new parallel test facility for testr
1156* Explain the startTestRun behaviour in testtools
1157* Fix the regression caused when fixing bug 654474 by permitting decorated test results to set their own policy for what constitutes and error and what doesn't. (Robert Collins, #683332)
1158* Deferred debugging support
1159* Make debug available from the factory
1160* Add flag to make debugging twisted tests easier
1161* Whitespace correction
1162* Functional programming ftw!
1163* Tell testr how to use --load-list now that it exists
1164* \* \`\`testtools.run\`\` now supports \`\`--load-list\`\`, which takes a file containing   test ids, one per line, and intersects those ids with the tests found. This   allows fine grained control of what tests are run even when the tests cannot   be named as objects to import (e.g. due to test parameterisation via   testscenarios). (Robert Collins)
1165* Fix thinko - first param is program is ignored
1166* Refactor for reusability
1167* Forgot to actually assert that list worked
1168* \* \`\`testtools.run\`\` now supports \`\`-l\`\` to list tests rather than executing   them. This is useful for integration with external test analysis/processing   tools like subunit and testrepository. (Robert Collins)
1169* Fix some more glitches
1170* Remove whack
1171* Grammar change
1172* Fix up the rest of the unexpected success issues, changing wasSuccessful to return False after unexpected success and adding unexpected success output to TextTestResult
1173* Fix a inaccurate unexpected success, hidden by our broken Python 3 support
1174* Actually report the error in TextTestResult (thanks mgz)
1175* Make RunTest responsible for running cleanups on tests
1176* NEWS update
1177* startTestRun resets unexpected successes and other errors
1178* Make MultiTestResult at all usable in Python 3
1179* minor nits
1180* Update NEWS
1181* Thoroughly test the Python 2.6 and 2.7 contracts, make sure that the adapted versions of our implementations behave according to the extended contract
1182* Test the extended double's contract
1183* Change the contract so that wasSuccessful should return False after unexpected successes
1184* Test the current contract for wasSuccessful, make some of our component results enforce it
1185* Link to the API docs
1186* Update for discovery
1187* Oops
1188* Publish the correct manual to PyPI on release
1189* Top-level documentation
1190* Don't version the built documentation
1191* Lots more documentation goodness
1192* Add Sphinx documentation building
1193* Lots of rst fixes
1194* End-to-end first draft
1195* Docstring tweaks
1196* Make cleanup running use run\_user and make the run\_user error handler understand MultipleExceptions.  Makes the whole thing easier to follow
1197* Pass through kwargs
1198* Skip unit tests for optional dependencies, rather than eliding them
1199* New EndsWith matcher
1200* Go back to using repr for exception types in MatchesException.\_\_str\_\_
1201* Start of manual for test authors, based on current manual
1202* Tweaks to HACKING
1203* Whitespace
1204* Make a 'doc' directory and move things there
1205* EndsWith matcher
1206* Do the same for fixtures
1207* Always run the deferred run tests
1208* Skip the spinner tests, rather than elide them
1209* Move responsibility for running cleanups to RunTest
1210* Add 'try\_import' and 'try\_imports'
1211* Polymorphism!
1212* I am a tool
1213* Nicer formatting
1214* More info for DelayedCalls
1215* Make the default iterations strict and good; add a new runner for broken Twisted
1216* Ugh.  It turns out that bugs like http://twistedmatrix.com/trac/ticket/2579 make this necessary
1217* Actually iterate the reactor after each thing. It seems this is necessary
1218* Implement isbaseexception to resolve failures from exception hierarchy changes in Python 2.5
1219* Rearrange MatchesException code and change str representation to work better with Python 2.4
1220* More Python 3 fixes
1221* Adapt MatchesException to work with old-style Exception classes in Python 2.4
1222* Weaken MatchesException stringification tests so they don't break on Exception implementation variations
1223* Use plain raise in Raises.match which is wrong on Python 2 but untested
1224* Make sure a byte string is used to join iterated bytes in Content obejcts
1225* Actually provide tracebacks for errors and failures in Deferred tests!
1226* Remove silly failing test
1227* Add new matchers for raising exceptions. (lifeless, jml)
1228* Add 'raises'
1229* Whitespace
1230* Update the MANUAL to make the lambda thing extra clear
1231* Tracebacks for errors from Deferred tests!
1232* Fix up the docstring
1233* We actually don't need this.  Methods that call loseConnection really ought to provide some other Deferred-based way of signalling that the connection has indeed been lost
1234* Clearer variable name in test code
1235* Convert assertRaises usage to assertThat
1236* Propograte KeyboardInterrupt from Raises
1237* Support matching exception types in MatchesException
1238* Cleaner code
1239* Convert MatchesException tests to the interface mixin
1240* Add a Raises matcher
1241* Add MatchesException matcher
1242* Use try\_import and try\_imports in actual code
1243* Change the helpers to get \*any\* object
1244* Document new helpers
1245* Raise an error if no alternative provided and can't import a module
1246* Add to all
1247* Support fallback imports
1248* \_\_all\_\_
1249* Make the tests more robust
1250* Handle submodules
1251* Add the twisted log unconditionally
1252* Use the new KeysEqual matcher
1253* Implement KeysEqual matcher
1254* Some simple changes from code review
1255* Make the test more robust in the face of a slow computer
1256* Actually, no we don't
1257* Things I need to do before I land
1258* Ugly hack, but I think necessary.  Spin the reactor once before cleaning
1259* Actually display the trapped log information in failing tests
1260* Silence the dump of logging to stdout/stderr by completely masking the log observers for the test
1261* Move out the bit that actually runs the test so we can more easily wrap it with things
1262* Fail tests on logged errors, include the error
1263* Extract some common code for logging user failures
1264* Actually make the tests fail when they have errors in Deferreds
1265* Log the creator and invoker data if we have them
1266* Add a convenience function for string content
1267* Make it possible to use the factory as a class variable
1268* Allow the reactor and timeout to be unspecified.  Sometimes you only care about one
1269* Move fixture tests to a separate module so we can import optionally
1270* Only run fixture support tests when fixtures is installed
1271* Add a .testr.conf
1272* \* \`\`testools.TestCase.useFixture\`\` has been added to glue with fixtures nicely.   (Robert Collins)
1273* Update manual to describe how to run testtools.run on Python 2.4
1274* Use deferredGenerator rather than inlineCallbacks
1275* Don't use inlineCallbacks, instead use deferredGenerator, since it works on Python 2.4
1276* \* \`\`testools.TestCase.useFixture\`\` has been added to glue with fixtures nicely.   (Robert Collins)
1277* Don't need twisted to run tests
1278* Skip signal tests on non-POSIX platforms
1279* Upcall exceptions so that we can work in Python 2.4
1280* Avoid functools or twisted dependency by updating wrapper function metadata inline
1281* UTF-8 encoded text needs the b marker on py3k
1282* Make test\_preserve\_signal\_handler valid on windows by only expecting as many handlers as will be created
1283* On non-posix platforms skip tests that require posix signal semantics
1284* Just call Exception.\_\_init\_\_ rather than using super for Python 2.4 compatibility
1285* Treat addUnexpectedSuccess as addFailure if the underlying result does not support addUnexpectedSuccess
1286* NEWS update
1287* Translate addUnexpectedSuccess to addFailure instead of addSuccess
1288* Fix the tests on win32, and make the Twisted-depending tests optional
1289* Might as well document this bit
1290* Only run the Twisted-depending tests unconditionally
1291* Guard the use of signals
1292* Don't import functools unconditionally, making tests runnable on Python 2.4
1293* Don't depend on functools, since it's only available in Python 2.5 or later
1294* Fix gratuitous Python 3 breakage
1295* I am not really into thongs
1296* Make SyntaxError decoding robust against malformed instances
1297* delete completely pointless line of code
1298* Better snapshot support for buildout
1299* run-tests is no more
1300* Less confusing version number for snapshot (for buildout)
1301* Get the version from PKG-INFO if it exists
1302* Refactor for comprehensibility by jml
1303* Add experimental support for running tests that return Deferreds and rely on the Twisted reactor
1304* Better documentation
1305* Mark unhandled errors in deferreds differently to regular errors
1306* Provide convenient ways to specify a RunTest factory for tests
1307* Test for inner-most decorator and comments
1308* Don't use extract result, instead use custom test runner
1309* News!
1310* Bring the behaviour in line with the documentation
1311* Improve manual for RunTest handling
1312* Extend the decorator to take kwargs and pass them on. Documentation, and rename to grammatically correct run\_test\_with
1313* Add a decorator for specifying the RunTest object to use
1314* Factor out the bit that gets the test method
1315* Add a class variable, run\_tests\_with, to allow controlling which runner to run tests with
1316* Make the runTest argument actually work
1317* Done!
1318* More tests, allow customization of failureException in assert\_fails\_with
1319* First pass at assert\_fails\_with
1320* Fix the version number
1321* Release documentation tweaks
1322* Update NEWS for 0.9.7 release
1323* Release improvements
1324* News
1325* StartsWith and DoesNotStartWith matchers from Launchpad
1326* More things to think about
1327* Less code, yay
1328* Test threading support
1329* Report tracebacks of unhandled errors
1330* TimeoutError is now reported as a test error
1331* Manual updates, todos, docstrings
1332* Scary
1333* Scarier docstring
1334* Rename \_Spinner to Spinner, now that it's in a private module
1335* Move the reactor spinning stuff into a separate module
1336* Move the spinner tests to a different module
1337* Make run() responsible for running \_clean(), and add a state-based thing for getting at junk
1338* Rename \_Spinner.clean to \_Spinner.\_clean, add a get\_junk() method
1339* whitespace
1340* Add a test to verify that we only call addError once
1341* Test faster keyboard interrupt
1342* Push the SIGINT tests lower, improving the documentation and fixing a state bug
1343* Fix one kind of KeyboardInterrupt case
1344* News update
1345* Remove another XXX
1346* Add some integration tests to make sure that tests run the way we expect them
1347* Don't let the reactor screw up signal handlers
1348* Documentation
1349* Handle cleanups that return Deferreds
1350* Make the test a little clearer
1351* Use timeout more nicely in tests
1352* Parametrize reactor and timeout
1353* Make sure the reactor is always cleaned
1354* Remove XXX
1355* Fail tests that have Deferreds with unhandled errors
1356* Helper for trapping unhandled errors in Deferreds
1357* Minor refactoring.  Add a test for handling unhandled errors
1358* Run all the test inside the one reactor start/crash cycle
1359* Raise errors when the reactor is unclean
1360* Stop using trial
1361* Another todo
1362* Tests for the not\_reentrant decorator
1363* Docs
1364* Tests for extract\_result
1365* XXX comments and tests
1366* Start to implement reactor cleaning, but doing it wrong. Should be only cleaning up stuff that wasn't there before
1367* Tweak tests to call \_Spinner class directly
1368* Expand the function into a much bigger class
1369* Extract the re-entrancy check
1370* Make a run\_in\_reactor function that has timeouts
1371* Make the damn thing work, crappily
1372* Add an AsynchronousDeferredRunTest class and a test for it that's actually no good
1373* Rename DeferredRunTest to SynchronousDeferredRunTest
1374* Make TestThreadSafeForwardingResult forward times to the wrapped result class
1375* Only show the reason for unittest on 2.7 rather than all the details
1376* Remove things not needed to make the test run
1377* The very start of Deferred support. Currently cheats by assuming that the Deferred has already fired
1378* Return the return values of setUp(), test-method and tearDown() so that RunTest objects can do things based on what they are
1379* Remove needless metaclass declaration
1380* Cleanups can now report multiple exceptions
1381* Enchance addCleanups for Fixtures
1382* Add test and minimal fix for \_\_details dict being shared among cloned TestCases
1383* \* Code duplication between assertEqual and the matcher Equals has been removed
1384* Code duplication between assertEqual and the matcher Equals has been removed
1385* Set the license and the long description. Useful for publishing to PyPI
1386* Make the release process more prescriptive. Add an item about tagging the release
1387* Release 0.9.6
1388* Added PlaceHolder & TestHolder
1389* Nicer formatting for assertEqual failures
1390* Add a test to verify the (very common) "no message" case
1391* NEWS entry
1392* Consistent case
1393* 1, not 0
1394* Add an ErrorHolder class
1395* NEWS entry
1396* Nice bzrlib-style assertEqual formatting
1397* Group the tests which rely on constructor details together
1398* Add a place-holder test case
1399* Add optional parameters to Mismatch
1400* Avoid exc\_info cycles in several places and comment on trickier ones
1401* Rename PLAIN\_TEXT to UTF8\_TEXT, the code must match the documentation
1402* New LessThan matcher
1403* NEWS
1404* Cheat. Return the results of \_dispatch always
1405* Pass back the results we get
1406* Update years in the LICENSE file
1407* Add TestCase.patch() and new testtools.monkey module for help with monkey-patching
1408* Make TestCase.patch() use the new patch() helper method. Becomes slightly less useful but more pure
1409* Add a convenience function to just patch a single thing
1410* Not necessary
1411* Handle missing attributes better
1412* Restore monkey code
1413* Handle cases where attributes don't exist
1414* Add an Is matcher and fix a bug preventing mismatches from being handled at all
1415* NEWS
1416* Documentation is great!
1417* Don't look for the monkey tests
1418* Just not needed
1419* Add patch() support to TestCase
1420* Initial implementation of try\_import
1421* More NEWS
1422* I can't believe we let this happen
1423* Add an Is matcher
1424* Refactor some more
1425* Refactor to reduce boilerplate
1426* Flakes
1427* Copyright, wuu
1428* Whitespace
1429* Docstring formatting
1430* Add UTF8\_TEXT helper
1431* Release testtools 0.9.5
1432* Handle string exceptions (mgz)
1433* Enable test for string exceptions in test results
1434* Catch string exceptions raised by tests on old versions which may raise them
1435* Correct variable name for string exceptions noticed by jml
1436* Use testtools for running these tests
1437* New style classes for matchers and runtest. (jkakar)
1438* Ignore Trial turds
1439* Cope with source line being None for unicode tracebacks
1440* Test exposing issue with trying to decode None for unicode traceback
1441* Whitespace, flakes
1442* - All old-style classes are now new-style classes
1443* Make \_details\_to\_str unicode correct, for really finally the absolute last time
1444* Out of date MANIFESTS make for bad tarballs
1445* Release 0.9.4
1446* Really get unicode conversion working in testresult.real.TestResult
1447* Improve the discovery support for use by other runners (like subunit.run)
1448* Unbreak Python 3 again, my unicode tweak was thoughtless
1449* Fix the code to use naming conventions
1450* Nicer comments
1451* Death to braces
1452* Better names, better conventions
1453* Add monkeypatcher code
1454* Copyright bump
1455* Do not generate str objects for StringException's internally
1456* testtools.utils has been renamed to testtools.compat. Importing testtools.utils will now generate a deprecation warning
1457* Move Python 2 \_StringException argument type check to \_\_init\_\_ from stringify methods
1458* Fix Python 3.1 support - remove the use of iteritems
1459* Unbreak test\_assertion\_text\_shift\_jis for Pythons with a unicode str type
1460* Add NEWS for unicode tracebacks on Python 2
1461* Make StringException.\_\_str\_\_ return UTF-8 rather than ascii/replace to prepare for merge
1462* Don't encode output as UTF-8 for TestNonAsciiResults
1463* Change a test from using iso-8859-7 to iso-8859-5 which doesn't happen to have the test character on the same codepoint as iso-8859-1
1464* Avoid problem introduced with fix to Python bug #1031213 by ignoring the SyntaxError line and rereading the file instead
1465* Document in tests the problems caused by CPython patch for issue #1031213
1466* Allow for mangling in shift\_jis test if the exception encoding is incompatible
1467* Allow detect encoding tests to work when a Python implementation may object to compiling them
1468* getlocale can return None if no locale is set, default to ascii
1469* Trivial issues seen when scanning the diff for review
1470* Move most of utils module to compat and put iterate\_tests in testsuite module
1471* Fix and test a bug with encoding of SyntaxError lines
1472* Make Jython skip unicode filesystem tests correctly again
1473* Sanitise unicode\_output\_stream a bit and add some tests, needs more work
1474* Revert no longer needed cosmetic changes to test\_content
1475* Unbreak test\_non\_ascii\_dirname from IronPython returning filesystem encoding as None
1476* Found \`ascii\` function in Python 3 which saves some reimplementation
1477* Fix test\_traceback\_rechecks\_encoding which got broken when adding Python 3 support
1478* Poke encoding specific code in TestNonAsciiResults some more
1479* Document and polish test discovery support
1480* Capitals for python in the MANUAL
1481* Revert work around for IronPython coding declaration as it breaks Python 2
1482* Work around a couple of quirks in non-mainstream Python implementations
1483* Use flag in utils to record whether the str type is unicode rather than checking version and platform in multiple places
1484* Rearrange some TestNonAsciiResults helpers
1485* Make final problem test for Python 3 run rather than skip
1486* Changes to make tests work on Python 3, and a short term hack to make output robust
1487* Polish the discovery support
1488* \* Thanks to a patch from James Westby testtools.matchers.Mismatch can now   supply a get\_details method, which assertThat will query to provide   additional attachments. This can be used to provide additional detail   about the mismatch that doesn't suite being included in describe(). For   instance, if the match process was complex, a log of the process could be   included, permitting debugging
1489* Rename details from Mismatches that clash with already added ones
1490* Switch get\_details to return a dict
1491* Fixes from Rob's review, thanks
1492* Add a getDetails that returns [] to the Mismatch class
1493* If getDetails is on Mismatch then thunk the results through to addDetail
1494* \* testtools.testresults.real.\_StringException will now answer \_\_str\_\_ if its   value is unicode by encoding with UTF8, and vice versa to answer \_\_unicode\_\_.   This permits subunit decoded exceptions to contain unicode and still format   correctly
1495* Add TestCase.skipTest as per Python2.7
1496* Support python3.1
1497* Fix a bunch of boneheaded errors in TestNonAsciiResults
1498* \* James Westby has supplied test discovery support using the Python 2.7   TestRunner in testtools.run. This requires the 'discover' module. This   closes bug #250764
1499* Add (C)/License information
1500* Comment on the changes made to TestProgram
1501* Move has\_discover = True until we know we have set up everything we need
1502* Import Queue class from queue/Queue module to make life less confusing
1503* Ignore \_\_pycache\_\_ directories, and ./build which setup.py creates
1504* Fix TestTextTestResult.test\_stopTestRun\_shows\_details yet again for another ZeroDivisionError message variation
1505* Remove relative import in testtools.testresult to make package work in py3k again
1506* Support discovery by backporting code from python2.7
1507* PEP 8 style fixes raised in review
1508* TestCase.addCleanup has had its docstring corrected about when cleanups run
1509* Tests work on IronPython patch from Martin[gz] applied
1510* Make testsuite pass on IronPython, also change an unused supercalss
1511* Pull out code for improving rather than just emulating formatting, work on tests some more, and other minor changes
1512* First pass at implementing unicode tracebacks for Python 2
1513* Time for 0.9.3
1514* 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
1515* PLAIN\_TEXT helper
1516* Tweak content type tests without changing content
1517* Add a new "Annotation" matcher. It doesn't do anything, but it lets you add strings to other matchers
1518* Remove \_\_repr\_\_ thing from NEWS
1519* Revert the matcher change
1520* NEWS tweaks
1521* Use repr for showing matchers, rather than str
1522* Add an 'Annotation' file
1523* Add some new matchers
1524* Raise more helpful errors when we fail to upcall setUp or tearDown
1525* Make the docs REST compliant
1526* Add optional message parameters to assertIs and assertIsNot
1527* Allow optional message parameters to assertIs and assertIsNot
1528* Make the documentation more general in the case of a deep test hierarchy
1529* Rich, meaningful errors when setUp or tearDown not called
1530* Add a target for making apidocs
1531* Fix many simple mistakes in the epytext
1532* Add a 'make apidocs' target, and fix the docstrings with errors
1533* Make the docs REST compliant
1534* Change from using deepcopy to copy in testcase.clone\_test\_with\_new\_id
1535* More docs on NotEquals
1536* getUniqueString now takes an optional prefix
1537* Amend docstring
1538* Remove documentation for the deprecated 'done' method
1539* Normalize vertical whitespace
1540* Add a MatchesAll matcher
1541* A NotEquals matcher
1542* News update
1543* Add a Not matcher
1544* done() is deprecated. Document startTestRun and stopTestRun instead
1545* News updates
1546* Bonus docstrings
1547* Allow passing a prefix to getUniqueString
1548* Correct mistake in addCleanup docstring -- cleanups are run after tearDown
1549* Various tweaks to increase PEP 8 and pyflakes compatibility
1550* Truth in copyright statements
1551* Lots of little coding cleanups
1552* Release is phony
1553* Remove trailing whitespace
1554* Change from using deepcopy to copy in testcase.clone\_test\_with\_new\_id
1555* Monkeypatch deepcopy for python 2.4 to support copying function objects
1556* Fix issue with test\_stopTestRun\_shows\_details on windows
1557* Fix test\_now\_datetime\_now on win32 where time.time() returns the same value multiple times
1558* Rephrase
1559* Clarify
1560* RELEASE!
1561* Add a hook, self.addOnException, called before non-success outcomes
1562* Make running tests with testtools doable from the command-line without python glue
1563* Make some of our test doubles available for external use for developers of unittest extensions
1564* Add TestCase.addOnException
1565* Make running tests with testtools doable from the commandline without python glue
1566* Include more stuff in 'setup.py sdist' so that what is in bzr matches
1567* Make some of our test doubles available for external use
1568* Move for-use test results to a submodule of a testresult package
1569* Make overwriting tarballs a little harder to do and expose a version number to clients
1570* Review feedback
1571* Cleanup overall branch
1572* Handle unicode tracebacks more gracefully
1573* 3.1 compatible run\_test.py
1574* Discard deepcopy approach, error rate is unacceptably high
1575* Change copyright assignment policy as per jml
1576* Reuse the standard library SkipTest exception when it is defined
1577* Make TracebackContent explicit about it's encoding to avoid issues if non-ascii characters are present in the traceback
1578* Add two new matchers, MatchesAny and Equals
1579* Handle TestSkipped exceptions that are raised without parameters
1580* Make ExtendedToOriginalDecorate more transparent to callers, to permit other users extensions to TestResult to work
1581* Fix setup.py version number, and add release process management notes
1582* Add milestone note
1583* merge from trunk; alter slightly for py3 support
1584* Slightly simplify getUniqueInteger using itertoolscount, patch from Benjamin Peterson
1585* use itertools.count() for unique ids
1586* account for different error message in py3
1587* add fake hash
1588* remove another StringIO.reset()
1589* add a sample non-empty exc-info
1590* use bytes for binary details
1591* don't store decoded value on traceback content
1592* no reset() on real StringIO
1593* Make TracebackContent suitable for py3k porting
1594* fake hashing on \_StringException
1595* kill itervalues()
1596* fix traceback Content and add a \_b() fake literal
1597* replace iteritems
1598* fix StringIO import on py3
1599* add a \_u function to imitate unicode literals on python3
1600* fix another except case
1601* fix except syntax in test
1602* handle Queue import
1603* fix except syntax
1604* the caught exception object isn't actually used here
1605* Handle TestSkipped being raised with no parameters
1606* Document NEWS and releasing, make setup.py executable
1607* Pass attributes unknown to ExtendedToOriginalDecorator to the decorated result
1608* Fix a typo in TestCase
1609* Remove a use of super that isn't quite right
1610* Clone tests before executing them
1611* Convert ConcurrentTestSuite tests to be cleaner using MatchesAny(Equals, Equals)
1612* Add an Equals matcher
1613* Add a new matchers MatchesAny
1614* Release 0.9.1
1615* Apply review feedback
1616* Python 2.4 support
1617* Support Python2.4 again
1618* Minor docstring tweak
1619* Clarity tweaks from Martin
1620* Change the Matcher API to be robust even if matching were to have side effects
1621* Tweak docs
1622* Docs, and make exception handlers modifiable
1623* More fully factored runtest
1624* Teach \_run\_core to indicate if an exception was caught and processed
1625* Consistent interface for handling exceptions in RunTest
1626* RunTest.handlers fully implemented
1627* Ensure KeyboardInterrupt isn't masked
1628* Permit passed in handlers to RunTest
1629* News announcement for 0.9
1630* We are now in development of 0.9.0
1631* Add a TextTestResult that supports our extended protocol
1632* Restore the hyphen
1633* Add a 'time' method to TestResult
1634* Tweak docs, capitalizing Python
1635* Add initial support for 'Matchers', inspired by hamcrest
1636* Point to hamcrest
1637* Fix spacing and typos
1638* Releasing improvements
1639* Correct example of test failure output
1640* 0.9.0. That was easy
1641* Implement a TextTestResult using the testtools API
1642* Implement TestResult.time()
1643* Add docs
1644* Implement a built in DocTestMatches matcher
1645* Add assertThat assertion to TestCase
1646* Finish Content - supply charset support
1647* Consolidate all the exception handling blocks into one
1648* Create a specific method to run the user code in a test
1649* Add python 2.4 support for run() - untested
1650* Move startTest/stopTest to RunTest
1651* Better name for RunTest.\_run\_decorated\_result
1652* Move result decoration to RunTest
1653* Move dynamic creation of test cases to RunTest
1654* Start moving TestCase.run() logic to testtools.RunTest
1655* Expose the details API for use from within test code
1656* Review feedback
1657* Remove duplicate test
1658* Support xfail and unexpected success
1659* Add a a way for TestCase to signal UnexpectedSuccess to itself
1660* Use details API in TestCase outcome reporting
1661* Add TestCase.add / get Details()
1662* Add the details API to the TestResults supported by testtools
1663* Alternative fix for nose - don't define a null test case method, its only useful for testing testtools
1664* Bring in the ExtendedToOriginal decorator from subunit
1665* Add mime support code for details API from subunit
1666* Prevent nose finding 'runTest' tests in classes derived from testtools.testcase.TestCase (bug 312257)
1667* Python 2.7 TestResult API support
1668* Error if setUp or tearDown are not called
1669* Compatible with python 2.7 at the TestResult layer
1670* Project meta cleanups: setup.py executable, multiple committers in HACKING, NEWS file created
1671* Start on 0.0.2: fix tests with python 2.6 (which defines \_\_eq\_\_)
1672* Compatibility with TestResult.startTestRun/stopTestRun
1673* Compatibility with TestResult.startTestRun/stopTestRun
1674* (statik) Add a manifest file so that LICENSE is included in the tarball generated by 'python setup.py sdist'
1675* Added MANIFEST.in so that LICENSE is included
1676* (statik) Add skip, skipIf and skipUnless decorators for Python standard library compatibility
1677* Reformatted imports per code review comments from jml
1678* Merged trunk
1679* Add a test suite and a test result to support concurrent testing
1680* Add a note to the manual about things that might upset people
1681* Review feedback
1682* Added tests for skipIf, skipUnless
1683* This adds some decorators:  skip, skipIf, and skipUnless
1684* Add ConcurrentTestSuite for running tests concurrently
1685* Add a ThreadsafeForwardingResult to testtools for use with parallel test execution
1686* Add skip support to testtools
1687* Correct some spelling and text in Rob's addSkip patch
1688* Add test skipping inspired by nose, bzr and trial to testtools. Calling self.skip('foo') in a test will cause the test to stop processing immediately. The test is reported as a skip to the result using addSkip if it is available, and addError if it is not
1689* Remove ITestResult and thus the undocumented dependency on zope.interfaces
1690* Rename pyunit3k to testtools
1691* Rename pyunit3k to testtools
1692* Add assertIs and assertIsNot to TestCase
1693* Add documentation to the manual
1694* Add assertIs and assertIsNot
1695* Improve user documentation: add HACKING and MANUAL files, and expand README
1696* Improve user documentation: add HACKING and MANUAL files, and expand README too
1697* Tests for pyunit3k's TestResult extensions
1698* Respond to review comments
1699* Complete tests for MultiTestResult
1700* Add tests for change\_test\_id, renaming to clone\_test\_with\_new\_id
1701* Start tests for MultiTestResult
1702* Some test factoring
1703* Change change\_test\_id to clone\_test\_with\_new\_id
1704* Add test for change\_test\_id, and modify change\_test\_id to do as the name implies
1705* Some tests for our TestResult extensions
1706* Split pyunit3k into several modules
1707* Last bit of splitting things up
1708* Move test result stuff
1709* Move interfaces to separate module
1710* It's only fair
1711* Fix up Makefile
1712* setup.py file
1713* Decide on MIT license
1714* Initial version of pyunit3k
1715