<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" dir="ltr" style="">
<p style="color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:12pt">
> <span>What are the specific information in the test runner you are referring to?</span></p>
<p style="color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:12pt">
<span style="font-size:12pt">It is "reentrant", you do not need to re-run all tests after debugging one. A DialogBox would need to be manually set as non-exclusive.</span></p>
<p style="color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:12pt">
<span><br>
</span></p>
<p style="color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:12pt">
<span>> <span>If the test runner would be a better option than the dialog, wouldn't we want to show it even if only a single test fails (result defects size = 1)?</span></span></p>
<p style="color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:12pt">
<span style="font-size:12pt">You're right, we could :)</span><br>
</p>
<p style="color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:12pt">
<span style="font-size:12pt"><br>
</span></p>
<p style="color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:12pt">
<span style="font-size:12pt"></p>
<p style="font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;">
<br>
</p>
Basically, I proposed these change because I did not really found a <span style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:16px">
DialogBox</span> comfortable for this purpose.</span>
<p></p>
<p style="color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:12pt">
<span style="font-size:12pt">It is modally exclusive but not reentrant.</span></p>
<p style="color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:12pt">
<span style="font-size:12pt">(I believe long test selector were displayed abbreviated, but I can't reproduce that.)</span></p>
<p style="color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:12pt">
<span style="font-size:12pt">Also, DialogBoxes are not resizable.</span></p>
<p style="color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:12pt">
<span style="font-size:12pt"><br>
</span></p>
<p style="color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:12pt">
<span style="font-size: 12pt;"><br>
</span></p>
<p style="color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:12pt">
<span style="font-size: 12pt;">On the other hand, I actually avoided using TestRunner </span>in the last time<span style="font-size: 12pt;">, as it has a few convenience drawbacks:</span><br>
</p>
<p style="color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:12pt">
<span style="font-size:12pt">1. I repeatedly faced an issue where a test, after debugging it, was not tear-downed correctly. Will try to reproduce that.</span></p>
<p style="color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:12pt">
<span style="font-size:12pt"><span>2. You cannot select a test without running it (impractical if you would like to open the menu, for example to browse it). Vice versa, you cannot run a test without selecting it, so the keyboard handling (such as navigation
 using arrow keys) is quite restricted ...</span></span></p>
<p style="color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:12pt">
<span style="font-size:12pt"><span>3. TestRunner is not aware of any additions to the test list (maybe we need something like #<span>didCodeChangeElsewhere)</span></span></span></p>
<p style="color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:12pt">
<span style="font-size:12pt"><span><br>
</span></span></p>
<p style="color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:12pt">
<span style="font-size:12pt"><span>But your words "specific information" sound interesting to me. Would it be an option to turn the TestRunner upside down, aiming to display the last error information for each test?</span></span></p>
<p style="color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:12pt">
<span style="font-size:12pt"><span>Some wild ideas :-)</span></span></p>
<p style=""></p>
<ul style="margin-bottom:0px; margin-top:0px">
<li style="color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:12pt">
<span style="font-size:12pt"><span>allow selection of single test cases; instead of separately displaying all errors/failures, display their success with an icon</span></span></li><li style="color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:12pt">
<span style="font-size:12pt"><span>add another panel to display information for the selected test</span></span>
<ul style="">
<li style="color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:12pt">
<span style="font-size:12pt"><span>this might include the failing line of the test method, the full error message (displayed in a big TextMorph, not as a one-liner with insufficient space), maybe the context stack - basically something like a collapsed debugger
 view</span></span></li><li style="color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:12pt">
<span style="font-size:12pt">I had an idea in the back of my mind for a few months: One could set </span><span style="font-size:12pt">up a small extension-based framework that provides</span><span style="font-size:12pt"> additional information about the failing
 assertion (if you're interested, I can tell you more) - we could display these information here</span><br>
<ul style="color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:12pt">
<li><span style="font-size:12pt">for example, in [self assert: [string allSatisfy: #isDigit]], instead of "AssertionFailed", the failure description could be something like "expected all elements of <'123a5'> to satisfy <#isDigit>, but <'a'> at index <4> didn't"</span></li><li><span style="font-size:12pt">ideally, the information would not be restricted to textual representation (why not import a diff view or an Inspector into the TestRunner? :) )</span></li></ul>
</li><li style="">It would be also possible to display *all* failures, not only the first one (I once read about resumable TestFailure implementations, why is TestFailure not marked as resumable by default?)</li></ul>
</li><li style=""><span style="font-size: 12pt;">If there are only few tests, maybe the test runner could suspend the failing/</span>erroneous<span style="font-size: 12pt;"> ones (actually their threads) instead of shutting them down? The user could then resume
 a test and directly jump to the raised Exception in debugger, without needing to wait for the test to re-run. Especially in case of heavy tests this might be a great help to some users.</span></li><li style="color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:12pt">
<span style="font-size:12pt"><span>By always displaying the source of the selected test method, we could improve the overall liveness of SUnit</span></span></li></ul>
<div><br>
</div>
<div>It's not a bunch, it's a forest of ideas, I know :) What do you think about them? Or are you already happy with the current TestRunner?</div>
<div><br>
</div>
<div>Best,</div>
<div>Christoph</div>
<br>
<div style="color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:12pt">
<hr style="display:inline-block; width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>Von:</b> Squeak-dev <squeak-dev-bounces@lists.squeakfoundation.org> im Auftrag von Taeumel, Marcel<br>
<b>Gesendet:</b> Mittwoch, 14. August 2019 17:03 Uhr<br>
<b>An:</b> John Pfersich via Squeak-dev<br>
<b>Betreff:</b> Re: [squeak-dev] The Inbox: SUnitTools-ct.5.mcz</font>
<div> </div>
</div>
<div>
<div id="__MailbirdStyleContent" style="font-size:10pt; font-family:Arial; color:#000000">
Hmmm.... What are the specific information in the test runner you are referring to? If the test runner would be a better option than the dialog, wouldn't we want to show it even if only a single test fails (result defects size = 1)?
<div><br>
</div>
<div>Best,</div>
<div>Marcel</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 31.05.2019 14:15:43 schrieb commits@source.squeak.org <commits@source.squeak.org>:</p>
<div style="font-family:Arial,Helvetica,sans-serif">A new version of SUnitTools was added to project The Inbox:<br>
http://source.squeak.org/inbox/SUnitTools-ct.5.mcz<br>
<br>
==================== Summary ====================<br>
<br>
Name: SUnitTools-ct.5<br>
Author: ct<br>
Time: 31 May 2019, 2:15:36.714053 pm<br>
UUID: 397d3b85-7ac5-3645-baa9-b9f848d90880<br>
Ancestors: SUnitTools-tcj.4<br>
<br>
Change CodeHolder>>testRunSuite: -- if multiple tests fail, instead of a UIManager dialog, open a TestRunner window that provides specific information.<br>
<br>
Depends on SUnitGUI-ct.70.<br>
<br>
=============== Diff against SUnitTools-tcj.4 ===============<br>
<br>
Item was changed:<br>
----- Method: CodeHolder>>testRunSuite: (in category '*SUnitTools-running') -----<br>
testRunSuite: suite<br>
<br>
+ | runner result |<br>
+ (suite isKindOf: TestCase)<br>
+ ifFalse: [<br>
+ runner := TestRunner newForSuite: suite.<br>
+ result := runner runAll; result]<br>
+ ifTrue: [result := suite run].<br>
- | result |<br>
- result := suite run.<br>
<br>
(result respondsTo: #dispatchResultsIntoHistory)<br>
ifTrue: [result dispatchResultsIntoHistory].<br>
<br>
result hasPassed ifTrue: [^ self].<br>
<br>
+ result defects size = 1<br>
+ ifTrue: [result defects anyOne debug]<br>
+ ifFalse: [runner open]!<br>
- (result defects size = 1<br>
- ifTrue: [result defects anyOne]<br>
- ifFalse: [UIManager default<br>
- chooseFrom: (result defects collect: [:each | each class name , '>>' , each selector printString])<br>
- values: result defects<br>
- title: ('{1} passes, {2} failures, {3} errors\\Debug a failure or error?' format: {<br>
- result runCount . result failureCount . result errorCount}) withCRs]<br>
- ) ifNotNil: [:defect | defect debug].<br>
- !<br>
<br>
<br>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</body>
</html>