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