<body><div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000">
I will revert that part of SUnit to make smalltalkCI work again.<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 09.09.2019 09:26:08 schrieb Marcel Taeumel <marcel.taeumel@hpi.de>:</p><div style="font-family:Arial,Helvetica,sans-serif"><div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000">
Well, smalltalkCI did a full source copy of Squeak's TestRunner. It should then also copy TestResult and TestCase, I suppose. :-)<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;min-width: 500px">
<p style="color: #AAAAAA; margin-top: 10px;">Am 07.09.2019 16:01:48 schrieb Jakob Reschke <forums.jakob@resfarm.de>:</p><div style="font-family:Arial,Helvetica,sans-serif">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><div dir="auto">I think this broke smalltalkCI.<div dir="auto"><br></div><div dir="auto"><pre style="font-family: cousine,monospace;min-height: 42px;padding: 15px 0px;color: rgb(241,241,241);font-size: 12px;line-height: 19px;white-space: pre-wrap;background-color: rgb(34,34,34);margin-top: 0px"><div style="padding:0px 15px 0px 62px;margin:0px;min-height:19px;background-color:rgb(68,68,68)!important">Running suite "Squeak64-trunk on Travis CI (32.1)" with 316 tests.</div><div style="padding:0px 15px 0px 62px;margin:0px;min-height:19px"><a style="color:rgb(102,102,102);display:inline-block;text-align:right;min-width:40px;padding-right:1em">509</a>vvvvvvvvvvvvvvvvvv MessageNotUnderstood: SCISqueakTestRunner>>runCaseMeasured: vvvvvvvvvvvvvvvvvv</div><div style="padding:0px 15px 0px 62px;margin:0px;min-height:19px"><a style="color:rgb(102,102,102);display:inline-block;text-align:right;min-width:40px;padding-right:1em">510</a>The time is 2019-09-07T11:42:29.61308+00:00</div><div style="padding:0px 15px 0px 62px;margin:0px;min-height:19px"><a style="color:rgb(102,102,102);display:inline-block;text-align:right;min-width:40px;padding-right:1em">511</a>SCISqueakTestRunner(Object)>>doesNotUnderstand: #runCaseMeasured:</div><div style="padding:0px 15px 0px 62px;margin:0px;min-height:19px"><a style="color:rgb(102,102,102);display:inline-block;text-align:right;min-width:40px;padding-right:1em">512</a>FSBreadthFirstGuideTest(TestCase)>>run:</div><div style="padding:0px 15px 0px 62px;margin:0px;min-height:19px"><a style="color:rgb(102,102,102);display:inline-block;text-align:right;min-width:40px;padding-right:1em">513</a>[] in SCISqueakTestRunner(SCITestRunner)>>runAll</div></pre></div><div dir="auto"><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr"> <<a href="mailto:commits@source.squeak.org">commits@source.squeak.org</a>> schrieb am Mi., 4. Sep. 2019, 17:28:<br></div><blockquote class="gmail_quote" style="margin: 0 0 0 .8ex;border-left: 1px #ccc solid;padding-left: 1ex;min-width: 500px">Marcel Taeumel uploaded a new version of SUnit to project The Trunk:<br>
<a href="http://source.squeak.org/trunk/SUnit-mt.117.mcz" rel="noreferrer noreferrer" target="_blank">http://source.squeak.org/trunk/SUnit-mt.117.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: SUnit-mt.117<br>
Author: mt<br>
Time: 4 September 2019, 5:27:53.689072 pm<br>
UUID: ca737f98-f12d-48c1-bb86-028b96fe0cf4<br>
Ancestors: SUnit-mt.116<br>
<br>
Measure the time to run a test and store it into the test-case history.<br>
<br>
=============== Diff against SUnit-mt.116 ===============<br>
<br>
Item was changed:<br>
----- Method: TestCase>>run: (in category 'running') -----<br>
run: aResult <br>
+ aResult runCaseMeasured: self.<br>
- aResult runCase: self.<br>
!<br>
<br>
Item was changed:<br>
Object subclass: #TestResult<br>
+ instanceVariableNames: 'timeStamp failures errors passed durations'<br>
- instanceVariableNames: 'timeStamp failures errors passed'<br>
classVariableNames: ''<br>
poolDictionaries: ''<br>
category: 'SUnit-Kernel'!<br>
<br>
!TestResult commentStamp: '<historical>' prior: 0!<br>
This is a Collecting Parameter for the running of a bunch of tests. TestResult is an interesting object to subclass or substitute. #runCase: is the external protocol you need to reproduce. Kent has seen TestResults that recorded coverage information and that sent email when they were done.!<br>
<br>
Item was added:<br>
+ ----- Method: TestResult>>duration (in category 'accessing') -----<br>
+ duration<br>
+ <br>
+ ^ self durations inject: 0 into: [:sum :each | sum + each]!<br>
<br>
Item was added:<br>
+ ----- Method: TestResult>>durations (in category 'accessing') -----<br>
+ durations<br>
+ ^ durations!<br>
<br>
Item was changed:<br>
----- Method: TestResult>>initialize (in category 'initialization') -----<br>
initialize<br>
super initialize.<br>
passed := OrderedCollection new.<br>
failures := Set new.<br>
errors := OrderedCollection new.<br>
+ timeStamp := TimeStamp now.<br>
+ durations := Dictionary new.!<br>
- timeStamp := TimeStamp now!<br>
<br>
Item was changed:<br>
----- Method: TestResult>>printOn: (in category 'printing') -----<br>
printOn: aStream<br>
aStream<br>
nextPutAll: self runCount printString;<br>
+ nextPutAll: ' run in ';<br>
+ nextPutAll: (Duration milliSeconds: self duration) printString;<br>
+ nextPutAll: ', ';<br>
- nextPutAll: ' run, ';<br>
nextPutAll: self expectedPassCount printString;<br>
nextPutAll: ' passes, ';<br>
nextPutAll: self expectedDefectCount printString;<br>
nextPutAll:' expected failures, ';<br>
nextPutAll: self unexpectedFailureCount printString;<br>
nextPutAll: ' failures, ';<br>
nextPutAll: self unexpectedErrorCount printString;<br>
nextPutAll:' errors, ';<br>
nextPutAll: self unexpectedPassCount printString;<br>
nextPutAll:' unexpected passes'.!<br>
<br>
Item was added:<br>
+ ----- Method: TestResult>>runCaseMeasured: (in category 'running') -----<br>
+ runCaseMeasured: aTestCase<br>
+ <br>
+ self durations<br>
+ at: aTestCase<br>
+ put: [self runCase: aTestCase] timeToRunWithoutGC.!<br>
<br>
Item was changed:<br>
----- Method: TestResult>>selectResultsForTestCase: (in category 'history') -----<br>
selectResultsForTestCase: aTestCaseClass<br>
+ | passedSelectors errorsSelectors failuresSelectors testCaseDurations |<br>
+ <br>
- | passedSelectors errorsSelectors failuresSelectors |<br>
passedSelectors := self passed<br>
select: [:testCase | testCase class == aTestCaseClass ] thenCollect: [:testCase | testCase selector].<br>
errorsSelectors := self errors <br>
select: [:testCase | testCase class == aTestCaseClass ] thenCollect: [:testCase | testCase selector].<br>
failuresSelectors := self failures <br>
select: [:testCase | testCase class == aTestCaseClass ] thenCollect: [:testCase | testCase selector].<br>
+ <br>
+ testCaseDurations := Dictionary new.<br>
+ self durations keysAndValuesDo: [:testCase :milliseconds |<br>
+ testCase class == aTestCaseClass ifTrue: [testCaseDurations at: testCase selector put: milliseconds]]. <br>
+ <br>
+ ^ self class newTestDictionary<br>
+ at: #timeStamp put: self timeStamp; "Keep this result's time stamp."<br>
- <br>
- ^ self class newTestDictionary <br>
at: #passed put: passedSelectors asSet;<br>
at: #failures put: failuresSelectors asSet;<br>
at: #errors put: errorsSelectors asSet;<br>
+ at: #durations put: testCaseDurations;<br>
+ at: #duration put: (testCaseDurations inject: 0 into: [:sum :each | sum + each]);<br>
yourself<br>
!<br>
<br>
<br>
</blockquote></div>
</div></blockquote></div></div></blockquote>
</div></body>