Why don't you just debug the test then? If you have to enable and rerun the test anyway, you can as well tell the test to open a debugger in case of a problem. Isn't this what "MyTest debug: #testMe" does?

Lukas

On Friday, 26 August 2011, Camillo Bruni <camillo.bruni@inria.fr> wrote:
>
> On 2011-08-26, at 16:28, Lukas Renggli wrote:
>
> 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).
>
> point taken.�
>
> 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, �?
>
> right, but they might also help debugging annoying nondeterministic edge cases. so I will implement it with an optional setting in the TestRunner. When you find an annoying test that won't run consistently you can rerun it with the continuation being recorded.
>
> Lukas
>
> On Friday, 26 August 2011, Camillo Bruni <camillo.bruni@inria.fr> wrote:
>>
>> On 2011-08-26, at 16:02, Frank Shearar wrote:
>>
>>> On 26 August 2011 14:54, Camillo Bruni <camillo.bruni@inria.fr> 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�<http://www.lukas-renggli.ch/>
>
>

--
Lukas Renggli
www.lukas-renggli.ch