Hi Marcel,<br>
<br>
> > Could we maybe just define a "special list" for these components/packages?<br>
> <br>
> No, we don't have a list of third-party projects that rely on this behavior. In order to improve this, you should offer a different way of coverage collection, not modifying the existing one.<br>
<br>
Then I can only think of an opt-in property per package under test. Something likes #allowsForInterruptionsDuringCoverage. But this would lead to a lot of bloat configuration everywhere ... And I also do not think it would be the right option to complicate the user flow in the Test Runner GUI by another button/check box/dialog. :/<br>
<br>
Best,<br>
Christoph<br>
<br>
<font color="#808080">---<br>
</font><font color="#808080"><i>Sent from </i></font><font 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></font><br>
<br>
On 2022-01-28T08:31:03+01:00, marcel.taeumel@hpi.de wrote:<br>
<br>
> Hi Christoph --<br>
> <br>
> > Could we maybe just define a "special list" for these components/packages?<br>
> <br>
> No, we don't have a list of third-party projects that rely on this behavior. In order to improve this, you should offer a different way of coverage collection, not modifying the existing one.<br>
> <br>
> Best,<br>
> Marcel<br>
> Am 27.01.2022 18:19:20 schrieb Thiede, Christoph <christoph.thiede at student.hpi.uni-potsdam.de>:<br>
> Hi Marcel,<br>
> <br>
> I think that this argument only applies to very few classes that are run on a higher priority than normal (for instance, the low space watcher). Could we maybe just define a "special list" for these components/packages? Or alternatively, ask the user whether to run on the highest priority or not? Or similarly to #ignoreForCoverage/#classNamesNotUnderTest/#packageNamesUnderTest, allow the source code under test to specify #deniesInterruptabilityForCoverage per method or per class? Then we could specify this attribute for WeakArray and Semaphore, for instance.<br>
> <br>
> I understand that we do not want to break code coverage for all Trunk packages, but this only affects a small minority of use cases for this tool whereas not being able to interrupt the test runner affects every developer for every third-party package.<br>
> <br>
> Best,<br>
> Christoph<br>
> Von: Squeak-dev <squeak-dev-bounces at lists.squeakfoundation.org> im Auftrag von Taeumel, Marcel<br>
> Gesendet: Montag, 24. Januar 2022 08:31:23<br>
> An: squeak-dev<br>
> Betreff: Re: [squeak-dev] The Inbox: SUnitGUI-ct.85.mcz<br>
>  <br>
> Hi Christoph --<br>
> <br>
> -1<br>
> <br>
> #valueUnpreemptively is the only mechanism we have at this point to collect somewhat reliable coverage statistics. If you have a better idea, okay. But let's not break this existing facility here. It would modify the statistics being collected.<br>
> <br>
> Best,<br>
> Marcel<br>
> Am 23.01.2022 16:44:54 schrieb commits at source.squeak.org <commits at source.squeak.org>:<br>
> A new version of SUnitGUI was added to project The Inbox:<br>
> http://source.squeak.org/inbox/SUnitGUI-ct.85.mcz<br>
> <br>
> ==================== Summary ====================<br>
> <br>
> Name: SUnitGUI-ct.85<br>
> Author: ct<br>
> Time: 23 January 2022, 4:44:44.095219 pm<br>
> UUID: c523a4d5-d9aa-7347-8e2f-66452a540c30<br>
> Ancestors: SUnitGUI-ct.84<br>
> <br>
> Proposal: Do not use #valueUnpreemptively for collecting coverage in the TestRunner. The former behavior made it impossible to interrupt a hanging test and also led to errors in all tests that try to schedule a process on a priority above the active priority.<br>
> <br>
> I have been happily using this setting for a few months in multiple images. The downside is that any processes running with higher-than-normal priority could interfere the results, but this only applies to code in the Kernel packages which is often not OaM-safe anyway.<br>
> <br>
> =============== Diff against SUnitGUI-ct.84 ===============<br>
> <br>
> Item was changed:<br>
> ----- Method: TestRunner>>collectCoverageFor: (in category 'actions') -----<br>
> collectCoverageFor: methods<br>
> | wrappers suite |<br>
> wrappers := methods collect: [ :each | TestCoverage on: each ].<br>
> suite := self<br>
> reset;<br>
> suiteAll.<br>
> <br>
> + wrappers do: [ :each | each install ].<br>
> + [ self runSuite: suite ] ensure: [ wrappers do: [ :each | each uninstall ] ].<br>
> - [ wrappers do: [ :each | each install ].<br>
> - [ self runSuite: suite ] ensure: [ wrappers do: [ :each | each uninstall ] ] ] valueUnpreemptively.<br>
> wrappers := wrappers reject: [ :each | each hasRun ].<br>
> wrappers isEmpty<br>
> ifTrue:<br>
> + [ self inform: 'Congratulations. Your tests cover all code under analysis.' translated ]<br>
> - [ UIManager default inform: 'Congratulations. Your tests cover all code under analysis.' ]<br>
> ifFalse:<br>
> [ ToolSet<br>
> browseMessageSet: (wrappers collect: [ :each | each reference ])<br>
> + name: ('Not Covered Code ({1}% Code Coverage)' translated format: {100 - (100 * wrappers size // methods size)})<br>
> - name: 'Not Covered Code (' , (100 - (100 * wrappers size // methods size)) printString , '% Code Coverage)'<br>
> autoSelect: nil ].<br>
> self saveResultInHistory!<br>
> <br>
> <br>
> -------------- next part --------------<br>
> An HTML attachment was scrubbed...<br>
> URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20220128/79b7c872/attachment.html><br>
> <br>