On Fri, Apr 8, 2011 at 8:12 AM, Michael Foord <fuzzyman at voidspace.org.uk> wrote: > On 07/04/2011 20:18, Robert Collins wrote: >> >> On Fri, Apr 8, 2011 at 4:49 AM, Michael Foord<fuzzyman at voidspace.org.uk> >> wrote: >>> >>> You mean that the test run keeps the test instances alive for the whole >>> test >>> run so instance attributes are also kept alive. How would you solve this >>> - >>> by having calling a TestSuite (which is how a test run is executed) >>> remove >>> members from themselves after each test execution? (Any failure >>> tracebacks >>> etc stored by the TestResult would also have to not keep the test alive.) >>> >>> My only concern would be backwards compatibility due to the change in >>> behaviour. >> >> An alternative is in TestCase.run() / TestCase.__call__(), make a copy >> and immediately delegate to it; that leaves the original untouched, >> permitting run-in-a-loop style helpers to still work. >> >> Testtools did something to address this problem, but I forget what it >> was offhand. >> > That doesn't sound like a general solution as not everything is copyable and > I don't think we should make that a requirement of tests. > > The proposed "fix" is to make test suite runs destructive, either replacing > TestCase instances with None or pop'ing tests after they are run (the latter > being what twisted Trial does). run-in-a-loop helpers could still repeatedly > iterate over suites, just not call the suite. Thats quite expensive - repeating discovery etc from scratch. If you don't repeat discovery then you're assuming copyability. What I suggested didn't /require/ copying - it delegates it to the test, an uncopyable test would simply not do this. -Rob
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4