CHANGES
=======

2.0.1
-----

* Fix #1590536 classifiers not reported in PyPI

2.0.0
-----

* Release 2.0.0
* README -> README.rst
* Drop support for Python 2.4, 2.5, 3.2
* Bug #1524048: depend on pbr at runtime

1.0.0
-----

* 1.0
* Handle unittest2 test suites as well
* Use pbr for versions as well
* More diagnostics on sort failures
* Cleanup old helper we don't need anymore
* Add a tox.ini for convenience
* Add a Travis config
* Ignore more files
* Build and ship wheels
* Migrate to pbr

0.2.7
-----

* Release 0.2.7
* Make FixtureResource.reset actually call fixture.reset()
* * TestResourceManager.reset() was not taking dependency dirtiness into consideration. (Brian Sutherland, #783488)
* * FixtureResource was not triggering cleanups or resets between uses, this is fixed (but will make OptimisingTestSuite trigger resets on every transition between tests). (Robert Collins, James Westby, #1023423)

0.2.6
-----

* Release 0.2.6 and add Python3.2 compat
* Ignore build products
* NEWS made clearer. (Martin Pool)
* A few README corrections:
* Fix PEP 8 & pyflakes warnings
* Fix several pep8 warnings

0.2.5
-----

* Release 0.2.5
* * Typo in NEWS fixed. (Thommi Richards)
* Fixed typo in README
* * super() is now called from ResourcedTestCase fixing a long standing issue with using it as a mix-in in Python 2.4 and above. (Tim Cole, #771505)
* fix usage of super() and get tests passing
* use super in test cases
* More clarity
* Tweak README
* * Added ``testresources.FixtureResource`` to wrap ``fixtures.Fixture`` instances. (Robert Collins)
* Fix typo in setup.py
* Release 0.2.4
* Relicenced to BSD / Apache2.0 with full agreement of contributors
* Use a travelling salesman heuristic to sort tests, accepting up to twice the total resource setup/teardown cost for fast (N^2) sort times
* partition tests to perform resource ordering optimisation into strongly connected sets of tests, reducing optimisation passes to cases where some resources are actually reused
* TestResource -> TestResourceManager
* Much improved documentation for end users
* Update NEWS file
* Some spelling corrections
* Third-party documentation for testresources
* Include MANIFEST.in and NEWS
* Release 0.2.3
* Make public reusable functions for setting up and tearing down resources of a test
* Implement an adapter for existing fixtures that honour a setUp/tearDown like protocol
* Make public reusable functions for setting up and tearing down resources of a test
* Typo
* Implement an adapter for existing fixtures that honour a setUp/tearDown like protocol
* Release 0.2.2
* Fix OptimisingTestSuite.addTest when adding other OptimisingTestSuite instances, which fixes testresources.TestLoader not generating optimising runs
* Fix build errors with recent testtools
* Handle finding a test result when surrounding frames are things like twisted reactors with run methods
* Release 0.2
* Really fix bug 284125 by using inspect to look up the TestResult being used and audit activity via the result object tests are being run with
* Review feedback
* Review feedback - make the trace happen around make and clean not just before, and pass structed info not a formatted string
* Allow tracing of TestResource activity by passing a trace_function to TestResource, fixing bug 284125
* Make TestResource.make_all and clean_all private methods
* A dirty or changed dependency of a resource makes the resource dirty too, fixing bug 324202
* Update code to reset() resources if they have been used by a test
* Rename _resetResource() to reset() (explicitly documenting it as overridable), and move the self._dirty check into the method
* Make OptimisingTestSuite release resources before running non-resourced tests
* Prevent thrashing on dependent resources
* Grouping of tests includes dependent tests
* Clean resources before their dependencies, so the dependency can be used during cleaning
* Implement non-optimising resource dependencies/cascading by extending the TestResource interface
* * Remove TODO item about using setUpCost and tearDownCost in cost calculation, since that has been implemented. * Remove TODO item about checking license on dijkstra and priodict modules, since both have been removed from the tree now
* Use _getGraph() to calculate the resource switching costs again. This prevents duplicate calculation in sortTests()
* Put the test splitting code into split_by_resources(), and update the tests for that code to match the new behaviour
* Test all permutations in testSortIsStableWithinGroups
* Rather than sorting the entire list of tests, sort groups of tests that share the same set of resources. There are usually relatively few such combinations in a test suite compared to the number of tests and there can never be more
* Really stomp on sort optimisation ordering. Will be slow with huge test numbers as no grouping is done
* Change the sortTests() algorithm to simply walk the graph of tests, moving to the unvisited test with the least cost edge in the graph. Not necessarily the smartest algorithm, but should do the trick
* Ditch Dijkstra for salesman, TINFL
* Fix OptimisingTestSuite._getGraph() to handle resources correctly
* Apply patch from James Henstridge to fix test failures
* Remove actioned TODO items
* Correctly determine least-cost overall setup and teardown. (Robert Collins)
* Don't need iterate_tests any more
* testtools not pyunit3k
* Just copy iterate_tests from testtools
* Update NEWS file
* Use testtools not pyunit3k
* Update README
* Update NEWS and TODO for adsorbSuite change
* Add another test to satisfy my paranoia
* Rename adsorbSuite to addTest in the tests
* Move implementation to addTest, deprecating adsorbSuite
* Implement in terms of base addTest
* Make adsorbSuite preserve some of the test suite hierarchy
* Failures are failures
* Remove unclear / crazy TODO item
* Rollback rename of adsorbSuite
* Forgot to remove this
* Move test_suite definitions to the top of test files, because lifeless likes it that way
* Clarify TODO item that I found unclear
* Add a test to confirm that sortTests is called
* 80 cols
* Vertical whitespace
* Rename makeResource and cleanResource to make and clean
* Add a sample test resource
* Update OptimisingTestSuite documentation
* Rename OptimizingTestSuite back to OptimisingTestSuite
* Corrections and clarifications to NEWS file
* Restore license text
* Update NEWS
* Move cost_of_switching and switch back into OptimizingTestSuite
* Rename flatAddTest to addTestFlat
* Add a NEWS file listing the changes
* Forgot the whole naming thing
* README formatting, spelling and some readability changes
* Dependencies!
* README cleanups
* Add a massive TODO file
* Move more stuff out of OptimizingTestSuite. This time its the logic to switch from one set of active resources to another
* SampleTestResource wasn't adding anything. Use wasSuccessful to assert that a result was successful
* Put in a note about how wrong the calculation are. Put in a bunch of tests for graph calculation
* Make _getGraph take only tests with resources as a parameter
* Extract the cost of switching logic into its own function
* Test split_by_resources to death
* More fun test cleanups
* More refactoring
* Rename adsorbSuite to flatAddTest, add a bunch of tests for it. Disable the test that has been causing intermittent failures
* More refactoring
* More factories, less class declarations
* Explode some test cases again
* Move more stuff into setUp
* Refactor a little to take advantage of instance-based resources
* Refactor things a bit, maybe too much
* Handle getting a dirty resource. Add another test
* Explode the rest of the TestResource tests, fixing one minor semantic bug
* Move some basic state into the constructor
* Explode testDefaultResource into many smaller tests
* Don't need this anymore
* Don't need quite so many subclasses of TestResource
* Change TestResource so that instances of it are passed to test cases, rather than the classes themselves
* More fun test cleanups
* Nicer repr() of mock tests
* Because we want to link pyunit3k in
* Ignore TAGS and tags files
* Add TAGS targets
* Add a 'clean' target to the makefile
* Use assertIn for multiple choice answer
* Use nicer assertions that pyunit3k provides
* Use pyunit3k for testing
* Split the sample resource test into a separate case
* Remove import tests
* Nicer whitespace
* Nicer imports
* More imports
* Nicer imports
* Move the test_suite hooks to the end of the test modules
* Do nicer imports
* Add a comment
* Move some comments to the bottom of the file
* Lots of docstrings
* Whitespace
* Fill comments
* Remove old comment
* Rename _makeResource to makeResource
* Rename _cleanResource
* Rename _resources to resources
* Move SampleTestResource into the tests package. Replace visitor / TestAdder pattern with iterate_tests usage
* setResource isn't used externally, so make it private
* These don't need to be staticmethods, they can be instance methods
* I really don't like hasattr
* Whitespace cleanup
* Optimising is spelled "optimizing"
* Use decorator syntax
* Many many XXX comments indicating areas to change. Whitespace cleanup. Format comments slightly better
* Add the GOALS document worked out between Rob and I
* Add setup.py
* give test resources setupUpCost and tearDownCost
* save notes from last night
* heh, actually enable the resource sorting test
* optimise resource construction somewhat - not travelling salesman, just plain old dijkstra
* deal with non ResourcedTestCases in OptimisingTestSuite.run
* if the OptimisingTestSuites _tests is well sorted, optimise resource construction and removal
* acquire test resources in OptimisingTestSuite
* initial cut at adsorbSuite
* initial implementation of ResourcedTestCase, found bug in TestResource implementation too
* support dirtying the resource
* provide a _cleanResource method for resource freeing
* let derived TestResources trivially reuse the reference counting facilities
* support nested getResource calls to do the right thing
* create a TestResource
* add the TestLoader
* first post
