<body><div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000;text-align: left" dir="ltr">
                                        Hi Christoph --<div><br></div><div>> <span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Do you agree with that idea in general? :-)</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">+1 Do it. Make all cases of "Warning" or "Halt" end up as a red test result.</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Best,</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Marcel</span></div><div class="mb_sig"></div><blockquote class='history_container' type='cite' style='border-left-style:solid;border-width:1px; margin-top:20px; margin-left:0px;padding-left:10px;'>
                        <p style='color: #AAAAAA; margin-top: 10px;'>Am 10.01.2022 18:22:11 schrieb christoph.thiede@student.hpi.uni-potsdam.de <christoph.thiede@student.hpi.uni-potsdam.de>:</p><div style='font-family:Arial,Helvetica,sans-serif'>
Hi all,<br>
<br>
I would like to raise this topic again.<br>
<br>
tl;dr: I proposed to treat all warnings raised in a test case as an error of the test, similar as we already do for Halts. Currently, a test that raises a warning will break the entire test runner. Do you agree with that idea in general? :-)<br>
<br>
If yes, I can also update the DecompilerTests so that they do not raise a UndeclaredVariableWarning any longer.<br>
<br>
Best,<br>
Christoph<br>
<br>
<span style="color: #808080">---<br>
</span><span style="color: #808080"><i>Sent from </i></span><span style="color: #808080"><i><a href="https://github.com/hpi-swa-lab/squeak-inbox-talk"><u><font color="#808080">Squeak Inbox Talk</font></u></a></i></span><br>
<br>
On 2020-09-24T10:22:19+00:00, christoph.thiede@student.hpi.uni-potsdam.de wrote:<br>
<br>
> Hi Fabio, hi all,<br>
> <br>
> <br>
> very good question (and after having waited about twenty minutes for two test executions and comparing them manually, I once again wish we had CI for every inbox commits ...)!<br>
> <br>
> <br>
> And actually, I broke the DecompilerTests, e.g. #testBlockNumbering, because somewhere during compilation, an UndeclaredVariableWarning is raised. All other tests, however, did not change their result after loading this inbox commit.<br>
> <br>
> <br>
> This behavior leads me to the question of whether it is justified to derive UndeclaredVariableWarning from Warning, given its #defaultAction implementation making it behave like a Notification.<br>
> <br>
> Alternatively, what could we do else if it is not acceptable to interrupt a test once it raises a warning? As I proposed somewhere else, we could catch UnhandledError instead of all these classes eventually open a debugger, but Marcel told me that this would be an implementation detail of the EHS and should not be exposed. Still, I cannot imagine any other way to write an exception handler that detects whether an exception will "raise a problem" eventually or whether it won't. Hmm ... What do you think? :-)<br>
> <br>
> <br>
> Best,<br>
> <br>
> Christoph<br>
> <br>
> <http://www.hpi.de/><br>
> ________________________________<br>
> Von: Squeak-dev <squeak-dev-bounces at lists.squeakfoundation.org> im Auftrag von Fabio Niephaus <lists at fniephaus.com><br>
> Gesendet: Donnerstag, 24. September 2020 10:50:44<br>
> An: squeak-dev at lists.squeakfoundation.org<br>
> Betreff: Re: [squeak-dev] The Inbox: SUnit-ct.129.mcz<br>
> <br>
> Hi Christoph,<br>
> <br>
> If you run all tests in your image without and with your change, does<br>
> the number of test failures change?<br>
> <br>
> Fabio<br>
> <br>
> On Thu, Sep 24, 2020 at 10:42 AM <commits at source.squeak.org> wrote:<br>
> ><br>
> > Christoph Thiede uploaded a new version of SUnit to project The Inbox:<br>
> > http://source.squeak.org/inbox/SUnit-ct.129.mcz<br>
> ><br>
> > ==================== Summary ====================<br>
> ><br>
> > Name: SUnit-ct.129<br>
> > Author: ct<br>
> > Time: 24 September 2020, 10:42:52.868426 am<br>
> > UUID: 92e68d23-8472-5d48-96d3-8435bd56ac14<br>
> > Ancestors: SUnit-pre.122<br>
> ><br>
> > Proposal: Catch warnings and halts in test case execution as well as Errors.<br>
> ><br>
> > Catching (Error, Warning, Halt) is a common pattern to be (relatively) sure that no debugger will occur during an operation. For related usages, see Morph >> #fullBounds, WorldState >> #displayWorldSafely:, and many other places. IMO it is no desired behavior that the whole test execution, i.e. in a TestRunner, is interrupted because any method under test contains a halt or raises a DeprecationWarning, for example. Instead, the test should be listed as red.<br>
> ><br>
> > For a similar discussion, see https://github.com/hpi-swa/smalltalkCI/issues/470. I believe we already had talked about this on squeak-dev, but if I remember correctly, I cannot find the thread again.<br>
> ><br>
> > =============== Diff against SUnit-pre.122 ===============<br>
> ><br>
> > Item was changed:<br>
> >   ----- Method: TestCase>>timeout:after: (in category 'private') -----<br>
> >   timeout: aBlock after: seconds<br>
> >         "Evaluate the argument block. Time out if the evaluation is not<br>
> >         complete after the given number of seconds. Handle the situation<br>
> >         that a timeout may occur after a failure (during debug)"<br>
> ><br>
> >         | theProcess delay watchdog |<br>
> ><br>
> >         "the block will be executed in the current process"<br>
> >         theProcess := Processor activeProcess.<br>
> >         delay := Delay forSeconds: seconds.<br>
> ><br>
> >         "make a watchdog process"<br>
> >         watchdog := [<br>
> >                 delay wait.     "wait for timeout or completion"<br>
> >                 theProcess ifNotNil:[ theProcess signalException:<br>
> >                         (TestFailure new messageText: 'Test timed out') ]<br>
> >         ] newProcess.<br>
> ><br>
> >         "Watchdog needs to run at high priority to do its job (but not at timing priority)"<br>
> >         watchdog priority: Processor timingPriority-1.<br>
> ><br>
> >         "catch the timeout signal"<br>
> >         watchdog resume.                                "start up the watchdog"<br>
> > +       ^[aBlock on: TestFailure, (Error, Warning, Halt) do: [:ex|<br>
> > -       ^[aBlock on: TestFailure, Error, Halt do:[:ex|<br>
> >                 theProcess := nil.<br>
> >                 ex pass.<br>
> >         ]] ensure:[                                                     "evaluate the receiver"<br>
> >                 theProcess := nil.                              "it has completed, so ..."<br>
> >                 delay delaySemaphore signal.    "arrange for the watchdog to exit"<br>
> >         ]!<br>
> ><br>
> > Item was added:<br>
> > + ----- Method: TestResult class>>exAllErrors (in category 'exceptions') -----<br>
> > + exAllErrors<br>
> > +       ^ self exError, Warning, Halt<br>
> > +                       !<br>
> ><br>
> > Item was changed:<br>
> >   ----- Method: TestResult>>runCase: (in category 'running') -----<br>
> >   runCase: aTestCase<br>
> ><br>
> >         | testCasePassed timeToRun |<br>
> >         testCasePassed := true.<br>
> ><br>
> >         [timeToRun := [aTestCase runCase] timeToRunWithoutGC]<br>
> >                 on: self class failure<br>
> >                 do: [:signal |<br>
> >                                 failures add: aTestCase.<br>
> >                                 testCasePassed := false.<br>
> >                                 signal return: false]<br>
> > +               on: self class exAllErrors<br>
> > -               on: self class error<br>
> >                 do: [:signal |<br>
> >                                 errors add: aTestCase.<br>
> >                                 testCasePassed := false.<br>
> >                                 signal return: false].<br>
> ><br>
> >         testCasePassed ifTrue: [passed add: aTestCase].<br>
> >         self durations at: aTestCase put: timeToRun.!<br>
> ><br>
> ><br>
> <br>
> -------------- next part --------------<br>
> An HTML attachment was scrubbed...<br>
> URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20200924/0599dc43/attachment.html><br>
> <br>

</div></blockquote>
                                        </div></body>