@@ -65,7 +65,7 @@ MTAnalysis >> defaultBudget [
6565{ #category : ' accessing - defaults' }
6666MTAnalysis >> defaultLogger [
6767
68- ^ MTTranscriptLogger new
68+ ^ MTProgressBarLogger new
6969]
7070
7171{ #category : ' accessing - defaults' }
@@ -117,42 +117,49 @@ MTAnalysis >> generalResult [
117117{ #category : ' running' }
118118MTAnalysis >> generateCoverageAnalysis [
119119
120- logger logStartCoverageAnalysis.
120+ logger logStartCoverageAnalysis: testCases size .
121121 coverageAnalysisResult := (MTCoverageAnalysis
122122 for: methodsToMutate
123123 running: testCases)
124124 run;
125- result
125+ result.
126+ logger logEndCoverageAnalysis
126127]
127128
128129{ #category : ' running' }
129130MTAnalysis >> generateMutations [
130131
131- logger logStartMutationGeneration.
132+ logger logStartMutationGeneration: self methodSize .
132133 ^ mutations ifNil: [
133134 mutations := mutantGenerationStrategy
134135 mutationsFor: self
135136 loggingIn: logger.
136- logger logTotalNumberOfMutations: mutations.
137+ logger
138+ logTotalNumberOfMutations: mutations;
139+ logEndMutationGeneration.
137140 mutations ]
138141]
139142
140143{ #category : ' running' }
141144MTAnalysis >> generateResults [
142145
143146 mutantResults := OrderedCollection new .
144- logger logStartMutationEvaluation.
147+ logger logStartMutationEvaluation: mutations .
145148
146149 mutations do: [ :aMutation |
147150 (budget exceedsBudgetOn: mutantResults fromTotalMutations: mutations)
148151 ifTrue: [ ^ mutantResults ].
149- logger logStartEvaluating: aMutation.
152+ logger logStartEvaluating: aMutation with: testCases size.
153+
150154 mutantResults add: ((MTMutantEvaluation
151155 for: aMutation
152156 using: testCases
153157 following: testSelectionStrategy
154158 andConsidering: self coverageAnalysisResult)
155- valueStoppingOnError: stopOnErrorOrFail) ].
159+ valueStoppingOnError: stopOnErrorOrFail).
160+ logger logEndEvaluating ].
161+
162+ logger logEndMutationEvaluation.
156163 logger logEnd.
157164 ^ mutantResults
158165]
@@ -161,7 +168,10 @@ MTAnalysis >> generateResults [
161168MTAnalysis >> initialTestRun [
162169 " Runs all tests once and filters them"
163170
164- testCases do: [ :aTestCase | aTestCase run ].
171+ | results |
172+ logger logStartInitialTestRun: testCases size.
173+ results := testCases collect: [ :aTestCase | aTestCase run ].
174+ logger logEndInitialTestRun.
165175
166176 " The test filter is initialized lazily here because the default one needs the run time of tests, so the initial test run must be executed first"
167177 testCases := self testFilter filterTests: testCases.
@@ -198,6 +208,12 @@ MTAnalysis >> logger: anObject [
198208 logger := anObject
199209]
200210
211+ { #category : ' as yet unclassified' }
212+ MTAnalysis >> methodSize [
213+
214+ ^ (self modelClasses flatCollect: #methods ) size
215+ ]
216+
201217{ #category : ' accessing' }
202218MTAnalysis >> methodsToMutate [
203219
@@ -292,16 +308,23 @@ MTAnalysis >> run [
292308 those classes) and execute all mutants in the set of testClases.
293309 We obtain a result for each mutant generated"
294310
295- self initialTestRun.
296-
297- " The budget is started after the initial test run because the default one needs the run time of tests"
298- budget start.
299- logger logAnalysisStartFor: self .
300-
301311 elapsedTime := [
302- self generateCoverageAnalysis.
303- self generateMutations.
304- self generateResults ] timeToRun
312+ logger logAnalysisStart.
313+ self initialTestRun.
314+ self startBudget.
315+ [
316+ self generateCoverageAnalysis.
317+ self generateMutations.
318+ self generateResults ] timeToRun ] ensure : [
319+ logger release ]
320+ ]
321+
322+ { #category : ' starting' }
323+ MTAnalysis >> startBudget [
324+ " The budget is initialized here because the default one needs the run time of tests, so the initial test run must be executed first"
325+
326+ budget ifNil: [ budget := self defaultBudget ].
327+ budget start
305328]
306329
307330{ #category : ' accessing' }
0 commit comments