Storing a continuation per failure/error potentially consumes a lot of memory. Memory leaks are also the reason why SUnit doesn't even remeber the exception (which only refer to one or two unwound stack frames).
Furthermore continuations interfeer with the guarantees of tearDown methods in test-cases and test-resources. This opens a box full of worms: when do you run them, how often do you run them, how do you ensure a consistent state, ...? Lukas On Friday, 26 August 2011, Camillo Bruni <[email protected]> wrote: > > On 2011-08-26, at 16:02, Frank Shearar wrote: > >> On 26 August 2011 14:54, Camillo Bruni <[email protected]> wrote: >>> It always bugged me that SUnit has to rerun the tests again when you want to debug them. So I made a little use-case where exceptions have an optional continuation, so you can resume/debug them later on. >>> >>> Here's a small example: >>> >>> |e| >>> [ 0 / 0 ] >>> on: Error >>> do: [ :error| e := error freeze ]. >>> e debug >>> >>> >>> freeze simply creates a continuation (at the moment a full one, but that could be of course reduced to a partial one by the TestRunner). Now when you would click on the failing test result you would simply have to activate the corresponding error by sending #debug to it. >>> >>> This would have a major advantage for non-deterministic tests (which of course they should not be). Because in this case you're lost with the current SUnit since the debug stack will differ from the actual test-run which produced the error. >>> >>> >>> Needed Changes: >>> - Continuations (the one from Seaside will just do fine) >>> - Exception >> #freeze saving the continuation >>> - TestCase has to store the actual exception >> >> Hi Camillo, >> >> Indeed, partial continuations would make an excellent addition to >> SUnit. Levente & I discussed doing do a short while back in >> squeak-dev. Have you had a look at >> http://www.squeaksource.com/Control.html by any chance? It implements >> the shift/reset control operator, which is almost what Seaside uses. >> >> frank > > No I was unaware of that, having a look at it right now. > > thanks > -- Lukas Renggli www.lukas-renggli.ch
