From 71d658e8d6f04c3fa0a4109efd95720f64214467 Mon Sep 17 00:00:00 2001 From: Durieux Pol Date: Wed, 21 Feb 2024 12:10:51 +0100 Subject: [PATCH 01/10] added filtered tests in mutalk general result --- src/MuTalk-Model/MTAnalysis.class.st | 21 +++++++- src/MuTalk-Model/MTGeneralResult.class.st | 48 +++++++++++++++---- .../MTGeneralResult.extension.st | 7 +++ 3 files changed, 66 insertions(+), 10 deletions(-) diff --git a/src/MuTalk-Model/MTAnalysis.class.st b/src/MuTalk-Model/MTAnalysis.class.st index 1b80cc5..e5b9e79 100644 --- a/src/MuTalk-Model/MTAnalysis.class.st +++ b/src/MuTalk-Model/MTAnalysis.class.st @@ -14,7 +14,8 @@ Class { 'stopOnErrorOrFail', 'testSelectionStrategy', 'mutantSelectionStrategy', - 'testFilter' + 'testFilter', + 'filteredTests' ], #category : 'MuTalk-Model-Core', #package : 'MuTalk-Model', @@ -505,10 +506,25 @@ MTAnalysis >> doNotStopOnErrorOrFail [ stopOnErrorOrFail := false ] +{ #category : 'accessing' } +MTAnalysis >> filteredTests [ + + ^ filteredTests +] + +{ #category : 'accessing' } +MTAnalysis >> filteredTests: anObject [ + + filteredTests := anObject +] + { #category : 'results' } MTAnalysis >> generalResult [ - ^ MTGeneralResult for: mutantResults timed: elapsedTime + ^ MTGeneralResult + for: mutantResults + timed: elapsedTime + filteredTests: filteredTests ] { #category : 'running' } @@ -536,6 +552,7 @@ MTAnalysis >> generateResults [ | tests | mutantResults := OrderedCollection new. tests := testFilter filterTests: testCases. + filteredTests := testCases copyWithoutAll: tests. mutations do: [ :aMutation | (budget exceedsBudgetOn: mutantResults fromTotalMutations: mutations) diff --git a/src/MuTalk-Model/MTGeneralResult.class.st b/src/MuTalk-Model/MTGeneralResult.class.st index 8c6a732..719ce9d 100644 --- a/src/MuTalk-Model/MTGeneralResult.class.st +++ b/src/MuTalk-Model/MTGeneralResult.class.st @@ -3,7 +3,8 @@ Class { #superclass : 'Object', #instVars : [ 'particularResults', - 'elapsedTime' + 'elapsedTime', + 'filteredTests' ], #category : 'MuTalk-Model-Core', #package : 'MuTalk-Model', @@ -16,14 +17,31 @@ MTGeneralResult class >> empty [ ] { #category : 'instance creation' } -MTGeneralResult class >> for: mutantsEvaluationsResults [ - ^self for: mutantsEvaluationsResults timed: Duration new +MTGeneralResult class >> for: mutantsEvaluationsResults [ + + ^ self + for: mutantsEvaluationsResults + timed: Duration new + filteredTests: #( ) +] + +{ #category : 'instance creation' } +MTGeneralResult class >> for: mutantsEvaluationsResults timed: anElapsedTime [ + + ^ self + for: mutantsEvaluationsResults + timed: anElapsedTime + filteredTests: #( ) ] { #category : 'instance creation' } -MTGeneralResult class >> for: mutantsEvaluationsResults timed: anElapsedTime [ - ^ self new initializeFor: mutantsEvaluationsResults timed: anElapsedTime; - yourself +MTGeneralResult class >> for: mutantsEvaluationsResults timed: anElapsedTime filteredTests: someTests [ + + ^ self new + initializeFor: mutantsEvaluationsResults + timed: anElapsedTime + filteredTests: someTests; + yourself ] { #category : 'accessing' } @@ -36,10 +54,24 @@ MTGeneralResult >> elapsedTime [ ^ elapsedTime ] +{ #category : 'accessing' } +MTGeneralResult >> filteredTests [ + + ^ filteredTests +] + +{ #category : 'accessing' } +MTGeneralResult >> filteredTests: anObject [ + + filteredTests := anObject +] + { #category : 'initialize' } -MTGeneralResult >> initializeFor: mutantsEvaluationsResults timed: anElapsedTime [ +MTGeneralResult >> initializeFor: mutantsEvaluationsResults timed: anElapsedTime filteredTests: someTests [ + particularResults := mutantsEvaluationsResults. - elapsedTime := anElapsedTime + elapsedTime := anElapsedTime. + filteredTests := someTests ] { #category : 'testing' } diff --git a/src/MuTalk-SpecUI/MTGeneralResult.extension.st b/src/MuTalk-SpecUI/MTGeneralResult.extension.st index 6f0214c..6c0f550 100644 --- a/src/MuTalk-SpecUI/MTGeneralResult.extension.st +++ b/src/MuTalk-SpecUI/MTGeneralResult.extension.st @@ -1,5 +1,12 @@ Extension { #name : 'MTGeneralResult' } +{ #category : '*MuTalk-SpecUI' } +MTGeneralResult >> filteredTestsExtension [ + + + ^ MTMutationResultsPresenter on: self filteredTests +] + { #category : '*MuTalk-SpecUI' } MTGeneralResult >> killedMutantsExtension [ From 8d6bae6bf0aab4c6f678442c586a97cb03825b70 Mon Sep 17 00:00:00 2001 From: Durieux Pol Date: Thu, 22 Feb 2024 10:20:35 +0100 Subject: [PATCH 02/10] added filtered test reasons, and attempt to improve filtered test in general result --- src/MuTalk-Model/MTAnalysis.class.st | 13 ++++++- src/MuTalk-Model/MTFreeTestFilter.class.st | 6 +++ src/MuTalk-Model/MTTestFilter.class.st | 6 +++ src/MuTalk-Model/MTTimeTestFilter.class.st | 6 +++ .../MTFilteredTestsPresenter.class.st | 38 +++++++++++++++++++ .../MTGeneralResult.extension.st | 2 +- 6 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 src/MuTalk-SpecUI/MTFilteredTestsPresenter.class.st diff --git a/src/MuTalk-Model/MTAnalysis.class.st b/src/MuTalk-Model/MTAnalysis.class.st index e5b9e79..0ae4da8 100644 --- a/src/MuTalk-Model/MTAnalysis.class.st +++ b/src/MuTalk-Model/MTAnalysis.class.st @@ -518,6 +518,17 @@ MTAnalysis >> filteredTests: anObject [ filteredTests := anObject ] +{ #category : 'as yet unclassified' } +MTAnalysis >> filteredTestsFrom: aTestCollection [ + + filteredTests := aTestCollection + inject: OrderedDictionary new + into: [ :accumulator :test | + accumulator add: + test -> testFilter filteredTestReason. + accumulator ] +] + { #category : 'results' } MTAnalysis >> generalResult [ @@ -552,7 +563,7 @@ MTAnalysis >> generateResults [ | tests | mutantResults := OrderedCollection new. tests := testFilter filterTests: testCases. - filteredTests := testCases copyWithoutAll: tests. + self filteredTestsFrom: (testCases copyWithoutAll: tests). mutations do: [ :aMutation | (budget exceedsBudgetOn: mutantResults fromTotalMutations: mutations) diff --git a/src/MuTalk-Model/MTFreeTestFilter.class.st b/src/MuTalk-Model/MTFreeTestFilter.class.st index eb3ecbe..b0df5c0 100644 --- a/src/MuTalk-Model/MTFreeTestFilter.class.st +++ b/src/MuTalk-Model/MTFreeTestFilter.class.st @@ -11,3 +11,9 @@ MTFreeTestFilter >> filterTests: aTestCaseCollection [ ^ aTestCaseCollection ] + +{ #category : 'accessing' } +MTFreeTestFilter >> filteredTestReason [ + + ^ 'Not filtered' +] diff --git a/src/MuTalk-Model/MTTestFilter.class.st b/src/MuTalk-Model/MTTestFilter.class.st index fae0ebe..3173fcc 100644 --- a/src/MuTalk-Model/MTTestFilter.class.st +++ b/src/MuTalk-Model/MTTestFilter.class.st @@ -34,3 +34,9 @@ MTTestFilter >> filterTests: aTestCaseCollection [ ^ self subclassResponsibility ] + +{ #category : 'accessing' } +MTTestFilter >> filteredTestReason [ + + self subclassResponsibility +] diff --git a/src/MuTalk-Model/MTTimeTestFilter.class.st b/src/MuTalk-Model/MTTimeTestFilter.class.st index 2f2f0bf..8655df1 100644 --- a/src/MuTalk-Model/MTTimeTestFilter.class.st +++ b/src/MuTalk-Model/MTTimeTestFilter.class.st @@ -12,3 +12,9 @@ MTTimeTestFilter >> filterTests: aTestCaseCollection [ ^ aTestCaseCollection select: [ :testCaseReference | testCaseReference lastTimeToRun <= condition ] ] + +{ #category : 'accessing' } +MTTimeTestFilter >> filteredTestReason [ + + ^ 'Took longer than ', condition printString, ' to run' +] diff --git a/src/MuTalk-SpecUI/MTFilteredTestsPresenter.class.st b/src/MuTalk-SpecUI/MTFilteredTestsPresenter.class.st new file mode 100644 index 0000000..54b44cb --- /dev/null +++ b/src/MuTalk-SpecUI/MTFilteredTestsPresenter.class.st @@ -0,0 +1,38 @@ +Class { + #name : 'MTFilteredTestsPresenter', + #superclass : 'MTMutationResultsPresenter', + #category : 'MuTalk-SpecUI', + #package : 'MuTalk-SpecUI' +} + +{ #category : 'initialization' } +MTFilteredTestsPresenter >> connectPresenters [ + + tablePresenter whenSelectionChangedDo: [ :selection | + | selectedItem | + selectedItem := selection selectedItem ] +] + +{ #category : 'layout' } +MTFilteredTestsPresenter >> defaultLayout [ + + ^ SpPanedLayout newTopToBottom + add: tablePresenter; + yourself +] + +{ #category : 'initialization' } +MTFilteredTestsPresenter >> initializePresenters [ + + tablePresenter := self newTable. + tablePresenter + items: model; + activateOnSingleClick; + addColumn: (SpStringTableColumn + title: 'FilteredTests' + evaluated: [ :each | each key ]); + addColumn: + (SpStringTableColumn + title: 'Reason' + evaluated: [ :each | each value ]) +] diff --git a/src/MuTalk-SpecUI/MTGeneralResult.extension.st b/src/MuTalk-SpecUI/MTGeneralResult.extension.st index 6c0f550..0c5a3ef 100644 --- a/src/MuTalk-SpecUI/MTGeneralResult.extension.st +++ b/src/MuTalk-SpecUI/MTGeneralResult.extension.st @@ -4,7 +4,7 @@ Extension { #name : 'MTGeneralResult' } MTGeneralResult >> filteredTestsExtension [ - ^ MTMutationResultsPresenter on: self filteredTests + ^ MTFilteredTestsPresenter on: self filteredTests ] { #category : '*MuTalk-SpecUI' } From dc23784c05c0133bafa0f814004cd6b3c029cb1e Mon Sep 17 00:00:00 2001 From: Durieux Pol Date: Thu, 22 Feb 2024 11:07:07 +0100 Subject: [PATCH 03/10] fix filtered tests in general result --- src/MuTalk-Model/MTAnalysis.class.st | 2 +- src/MuTalk-SpecUI/MTGeneralResult.extension.st | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/MuTalk-Model/MTAnalysis.class.st b/src/MuTalk-Model/MTAnalysis.class.st index 0ae4da8..deedcc1 100644 --- a/src/MuTalk-Model/MTAnalysis.class.st +++ b/src/MuTalk-Model/MTAnalysis.class.st @@ -522,7 +522,7 @@ MTAnalysis >> filteredTests: anObject [ MTAnalysis >> filteredTestsFrom: aTestCollection [ filteredTests := aTestCollection - inject: OrderedDictionary new + inject: OrderedCollection new into: [ :accumulator :test | accumulator add: test -> testFilter filteredTestReason. diff --git a/src/MuTalk-SpecUI/MTGeneralResult.extension.st b/src/MuTalk-SpecUI/MTGeneralResult.extension.st index 0c5a3ef..a19f3f0 100644 --- a/src/MuTalk-SpecUI/MTGeneralResult.extension.st +++ b/src/MuTalk-SpecUI/MTGeneralResult.extension.st @@ -4,7 +4,7 @@ Extension { #name : 'MTGeneralResult' } MTGeneralResult >> filteredTestsExtension [ - ^ MTFilteredTestsPresenter on: self filteredTests + ^ MTFilteredTestsPresenter on: filteredTests ] { #category : '*MuTalk-SpecUI' } From 7a6ed52197f98c3cda6ba712a51daac14cfd0dd2 Mon Sep 17 00:00:00 2001 From: Durieux Pol Date: Thu, 22 Feb 2024 14:14:46 +0100 Subject: [PATCH 04/10] added basic view of test code --- src/MuTalk-SpecUI/MTFilteredTestsPresenter.class.st | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/MuTalk-SpecUI/MTFilteredTestsPresenter.class.st b/src/MuTalk-SpecUI/MTFilteredTestsPresenter.class.st index 54b44cb..65316d2 100644 --- a/src/MuTalk-SpecUI/MTFilteredTestsPresenter.class.st +++ b/src/MuTalk-SpecUI/MTFilteredTestsPresenter.class.st @@ -1,6 +1,9 @@ Class { #name : 'MTFilteredTestsPresenter', #superclass : 'MTMutationResultsPresenter', + #instVars : [ + 'testCodePresenter' + ], #category : 'MuTalk-SpecUI', #package : 'MuTalk-SpecUI' } @@ -10,7 +13,8 @@ MTFilteredTestsPresenter >> connectPresenters [ tablePresenter whenSelectionChangedDo: [ :selection | | selectedItem | - selectedItem := selection selectedItem ] + selectedItem := selection selectedItem. + testCodePresenter text: selectedItem key method sourceCode ] ] { #category : 'layout' } @@ -18,6 +22,7 @@ MTFilteredTestsPresenter >> defaultLayout [ ^ SpPanedLayout newTopToBottom add: tablePresenter; + add: testCodePresenter; yourself ] @@ -34,5 +39,7 @@ MTFilteredTestsPresenter >> initializePresenters [ addColumn: (SpStringTableColumn title: 'Reason' - evaluated: [ :each | each value ]) + evaluated: [ :each | each value ]). + + testCodePresenter := self newText. ] From af5f9748be1a08736e9cecae1800f63c87ddb8a8 Mon Sep 17 00:00:00 2001 From: Durieux Pol Date: Thu, 22 Feb 2024 17:51:52 +0100 Subject: [PATCH 05/10] added filteredTestReason to new filters --- src/MuTalk-Model/MTBlockTestFilter.class.st | 6 +++++ .../MTPragmaRejectionTestFilter.class.st | 6 +++++ .../MTPragmaSelectionTestFilter.class.st | 6 +++++ src/MuTalk-Model/MTPragmaTestFilter.class.st | 22 +++++++++++++++++++ 4 files changed, 40 insertions(+) diff --git a/src/MuTalk-Model/MTBlockTestFilter.class.st b/src/MuTalk-Model/MTBlockTestFilter.class.st index ac03f90..a49c262 100644 --- a/src/MuTalk-Model/MTBlockTestFilter.class.st +++ b/src/MuTalk-Model/MTBlockTestFilter.class.st @@ -11,3 +11,9 @@ MTBlockTestFilter >> filterTests: aTestCaseCollection [ ^ aTestCaseCollection select: condition ] + +{ #category : 'accessing' } +MTBlockTestFilter >> filteredTestReason [ + + ^ 'Took longer than ', condition printString, ' to run' +] diff --git a/src/MuTalk-Model/MTPragmaRejectionTestFilter.class.st b/src/MuTalk-Model/MTPragmaRejectionTestFilter.class.st index cace34a..137dffc 100644 --- a/src/MuTalk-Model/MTPragmaRejectionTestFilter.class.st +++ b/src/MuTalk-Model/MTPragmaRejectionTestFilter.class.st @@ -12,3 +12,9 @@ MTPragmaRejectionTestFilter >> filterTests: aTestCaseCollection [ ^ aTestCaseCollection reject: [ :testCaseReference | self isPragmaValidFrom: testCaseReference ] ] + +{ #category : 'accessing' } +MTPragmaRejectionTestFilter >> reasonString [ + + ^ 'Contains the pragma <' , condition +] diff --git a/src/MuTalk-Model/MTPragmaSelectionTestFilter.class.st b/src/MuTalk-Model/MTPragmaSelectionTestFilter.class.st index 40dd87d..16bc6ac 100644 --- a/src/MuTalk-Model/MTPragmaSelectionTestFilter.class.st +++ b/src/MuTalk-Model/MTPragmaSelectionTestFilter.class.st @@ -12,3 +12,9 @@ MTPragmaSelectionTestFilter >> filterTests: aTestCaseCollection [ ^ aTestCaseCollection select: [ :testCaseReference | self isPragmaValidFrom: testCaseReference ] ] + +{ #category : 'accessing' } +MTPragmaSelectionTestFilter >> reasonString [ + + ^ 'Does not contain the pragma <' , condition +] diff --git a/src/MuTalk-Model/MTPragmaTestFilter.class.st b/src/MuTalk-Model/MTPragmaTestFilter.class.st index c683d82..5f8c85f 100644 --- a/src/MuTalk-Model/MTPragmaTestFilter.class.st +++ b/src/MuTalk-Model/MTPragmaTestFilter.class.st @@ -36,6 +36,22 @@ MTPragmaTestFilter >> filterTests: aTestCaseCollection [ ^ self subclassResponsibility ] +{ #category : 'accessing' } +MTPragmaTestFilter >> filteredTestReason [ + + | reasonString | + reasonString := self reasonString. + + ^ pragmaArguments isEmpty + ifTrue: [ reasonString , '>' ] + ifFalse: [ + | pragmaString | + pragmaString := pragmaArguments reduce: [ :arg1 :arg2 | + arg1 , ' ' , arg2 ]. + + reasonString , pragmaString , '>' ] +] + { #category : 'testing' } MTPragmaTestFilter >> isPragmaValidFrom: aTestCaseReference [ @@ -56,3 +72,9 @@ MTPragmaTestFilter >> pragmaArguments: anObject [ pragmaArguments := anObject ] + +{ #category : 'accessing' } +MTPragmaTestFilter >> reasonString [ + + self subclassResponsibility +] From f0fd31dd9910adf153b75e9b0e995dd7446ff934 Mon Sep 17 00:00:00 2001 From: Durieux Pol Date: Thu, 22 Feb 2024 18:00:22 +0100 Subject: [PATCH 06/10] changed text presenter to code presenter --- src/MuTalk-SpecUI/MTFilteredTestsPresenter.class.st | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MuTalk-SpecUI/MTFilteredTestsPresenter.class.st b/src/MuTalk-SpecUI/MTFilteredTestsPresenter.class.st index 65316d2..2b5c1a1 100644 --- a/src/MuTalk-SpecUI/MTFilteredTestsPresenter.class.st +++ b/src/MuTalk-SpecUI/MTFilteredTestsPresenter.class.st @@ -41,5 +41,5 @@ MTFilteredTestsPresenter >> initializePresenters [ title: 'Reason' evaluated: [ :each | each value ]). - testCodePresenter := self newText. + testCodePresenter := self newCode. ] From 781862ec6d9c64751fb5c99d1989df3df2ebe10d Mon Sep 17 00:00:00 2001 From: Durieux Pol Date: Fri, 23 Feb 2024 10:40:41 +0100 Subject: [PATCH 07/10] improved code presenter --- src/MuTalk-SpecUI/MTFilteredTestsPresenter.class.st | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/MuTalk-SpecUI/MTFilteredTestsPresenter.class.st b/src/MuTalk-SpecUI/MTFilteredTestsPresenter.class.st index 2b5c1a1..291dd57 100644 --- a/src/MuTalk-SpecUI/MTFilteredTestsPresenter.class.st +++ b/src/MuTalk-SpecUI/MTFilteredTestsPresenter.class.st @@ -14,7 +14,10 @@ MTFilteredTestsPresenter >> connectPresenters [ tablePresenter whenSelectionChangedDo: [ :selection | | selectedItem | selectedItem := selection selectedItem. - testCodePresenter text: selectedItem key method sourceCode ] + testCodePresenter + beForMethod: selectedItem key method; + text: selectedItem key method sourceCode; + beNotEditable ] ] { #category : 'layout' } From e6e1ba6fbfb3200df22d787f5c547e7f90dea05e Mon Sep 17 00:00:00 2001 From: Durieux Pol Date: Fri, 23 Feb 2024 10:50:03 +0100 Subject: [PATCH 08/10] fixed test --- src/MuTalk-Tests/MTPragmaSelectionTestFilterTest.class.st | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MuTalk-Tests/MTPragmaSelectionTestFilterTest.class.st b/src/MuTalk-Tests/MTPragmaSelectionTestFilterTest.class.st index d339623..2235d8a 100644 --- a/src/MuTalk-Tests/MTPragmaSelectionTestFilterTest.class.st +++ b/src/MuTalk-Tests/MTPragmaSelectionTestFilterTest.class.st @@ -39,7 +39,7 @@ MTPragmaSelectionTestFilterTest >> testAllTestsAreExcluded [ { #category : 'tests' } MTPragmaSelectionTestFilterTest >> testAllTestsAreExcluded2 [ - self runAnalysisForPragmaCondition: #aPragma: andArguments: 'arg'. + self runAnalysisForPragmaCondition: #aPragma: andArguments: { 'arg' }. self assert: (analysis generalResult particularResults at: 1) runCount From b0af3ad0199c20034ba285a396f8c2c86556cb66 Mon Sep 17 00:00:00 2001 From: Durieux Pol Date: Thu, 14 Mar 2024 11:22:07 +0100 Subject: [PATCH 09/10] added excluded tests and filtered tests as instance variables + refactor --- src/MuTalk-Model/MTBlockTestFilter.class.st | 10 ++++- src/MuTalk-Model/MTFreeTestFilter.class.st | 10 ++++- .../MTPragmaRejectionTestFilter.class.st | 11 +++-- .../MTPragmaSelectionTestFilter.class.st | 11 +++-- src/MuTalk-Model/MTPragmaTestFilter.class.st | 20 ++++++--- src/MuTalk-Model/MTTestFilter.class.st | 44 ++++++++++++++++++- src/MuTalk-Model/MTTimeTestFilter.class.st | 11 ++++- 7 files changed, 97 insertions(+), 20 deletions(-) diff --git a/src/MuTalk-Model/MTBlockTestFilter.class.st b/src/MuTalk-Model/MTBlockTestFilter.class.st index a49c262..3486815 100644 --- a/src/MuTalk-Model/MTBlockTestFilter.class.st +++ b/src/MuTalk-Model/MTBlockTestFilter.class.st @@ -7,9 +7,9 @@ Class { } { #category : 'enumerating' } -MTBlockTestFilter >> filterTests: aTestCaseCollection [ +MTBlockTestFilter >> excludedTestsFrom: aTestCaseCollection [ - ^ aTestCaseCollection select: condition + ^ aTestCaseCollection reject: condition ] { #category : 'accessing' } @@ -17,3 +17,9 @@ MTBlockTestFilter >> filteredTestReason [ ^ 'Took longer than ', condition printString, ' to run' ] + +{ #category : 'enumerating' } +MTBlockTestFilter >> filteredTestsFrom: aTestCaseCollection [ + + ^ aTestCaseCollection select: condition +] diff --git a/src/MuTalk-Model/MTFreeTestFilter.class.st b/src/MuTalk-Model/MTFreeTestFilter.class.st index b0df5c0..b48a21e 100644 --- a/src/MuTalk-Model/MTFreeTestFilter.class.st +++ b/src/MuTalk-Model/MTFreeTestFilter.class.st @@ -7,9 +7,9 @@ Class { } { #category : 'enumerating' } -MTFreeTestFilter >> filterTests: aTestCaseCollection [ +MTFreeTestFilter >> excludedTestsFrom: aTestCaseCollection [ - ^ aTestCaseCollection + ^ OrderedCollection empty ] { #category : 'accessing' } @@ -17,3 +17,9 @@ MTFreeTestFilter >> filteredTestReason [ ^ 'Not filtered' ] + +{ #category : 'enumerating' } +MTFreeTestFilter >> filteredTestsFrom: aTestCaseCollection [ + + ^ aTestCaseCollection +] diff --git a/src/MuTalk-Model/MTPragmaRejectionTestFilter.class.st b/src/MuTalk-Model/MTPragmaRejectionTestFilter.class.st index 137dffc..9747c65 100644 --- a/src/MuTalk-Model/MTPragmaRejectionTestFilter.class.st +++ b/src/MuTalk-Model/MTPragmaRejectionTestFilter.class.st @@ -7,10 +7,15 @@ Class { } { #category : 'enumerating' } -MTPragmaRejectionTestFilter >> filterTests: aTestCaseCollection [ +MTPragmaRejectionTestFilter >> excludedTestsFrom: aTestCaseCollection [ - ^ aTestCaseCollection reject: [ :testCaseReference | - self isPragmaValidFrom: testCaseReference ] + ^ self selectPragmaInTestCollection: aTestCaseCollection +] + +{ #category : 'enumerating' } +MTPragmaRejectionTestFilter >> filteredTestsFrom: aTestCaseCollection [ + + ^ self rejectPragmaInTestCollection: aTestCaseCollection ] { #category : 'accessing' } diff --git a/src/MuTalk-Model/MTPragmaSelectionTestFilter.class.st b/src/MuTalk-Model/MTPragmaSelectionTestFilter.class.st index 16bc6ac..c02a5a8 100644 --- a/src/MuTalk-Model/MTPragmaSelectionTestFilter.class.st +++ b/src/MuTalk-Model/MTPragmaSelectionTestFilter.class.st @@ -7,10 +7,15 @@ Class { } { #category : 'enumerating' } -MTPragmaSelectionTestFilter >> filterTests: aTestCaseCollection [ +MTPragmaSelectionTestFilter >> excludedTestsFrom: aTestCaseCollection [ - ^ aTestCaseCollection select: [ :testCaseReference | - self isPragmaValidFrom: testCaseReference ] + ^ self rejectPragmaInTestCollection: aTestCaseCollection +] + +{ #category : 'enumerating' } +MTPragmaSelectionTestFilter >> filteredTestsFrom: aTestCaseCollection [ + + ^ self selectPragmaInTestCollection: aTestCaseCollection ] { #category : 'accessing' } diff --git a/src/MuTalk-Model/MTPragmaTestFilter.class.st b/src/MuTalk-Model/MTPragmaTestFilter.class.st index 5f8c85f..d2202d0 100644 --- a/src/MuTalk-Model/MTPragmaTestFilter.class.st +++ b/src/MuTalk-Model/MTPragmaTestFilter.class.st @@ -30,12 +30,6 @@ MTPragmaTestFilter class >> isAbstract [ ^ self == MTPragmaTestFilter ] -{ #category : 'enumerating' } -MTPragmaTestFilter >> filterTests: aTestCaseCollection [ - - ^ self subclassResponsibility -] - { #category : 'accessing' } MTPragmaTestFilter >> filteredTestReason [ @@ -78,3 +72,17 @@ MTPragmaTestFilter >> reasonString [ self subclassResponsibility ] + +{ #category : 'enumerating' } +MTPragmaTestFilter >> rejectPragmaInTestCollection: aTestCaseCollection [ + + ^ aTestCaseCollection reject: [ :testCaseReference | + self isPragmaValidFrom: testCaseReference ] +] + +{ #category : 'enumerating' } +MTPragmaTestFilter >> selectPragmaInTestCollection: aTestCaseCollection [ + + ^ aTestCaseCollection select: [ :testCaseReference | + self isPragmaValidFrom: testCaseReference ] +] diff --git a/src/MuTalk-Model/MTTestFilter.class.st b/src/MuTalk-Model/MTTestFilter.class.st index 3173fcc..2dd4a55 100644 --- a/src/MuTalk-Model/MTTestFilter.class.st +++ b/src/MuTalk-Model/MTTestFilter.class.st @@ -2,7 +2,9 @@ Class { #name : 'MTTestFilter', #superclass : 'Object', #instVars : [ - 'condition' + 'condition', + 'excludedTests', + 'filteredTests' ], #category : 'MuTalk-Model-Test filters', #package : 'MuTalk-Model', @@ -29,14 +31,52 @@ MTTestFilter >> condition: aCondition [ condition := aCondition ] +{ #category : 'accessing' } +MTTestFilter >> excludedTests [ + + ^ excludedTests +] + +{ #category : 'accessing' } +MTTestFilter >> excludedTests: anObject [ + + excludedTests := anObject +] + { #category : 'enumerating' } -MTTestFilter >> filterTests: aTestCaseCollection [ +MTTestFilter >> excludedTestsFrom: aTestCaseCollection [ ^ self subclassResponsibility ] +{ #category : 'enumerating' } +MTTestFilter >> filterTests: aTestCaseCollection [ + + excludedTests := (self excludedTestsFrom: aTestCaseCollection) + collect: [ :test | test -> self filteredTestReason ]. + ^ filteredTests := self filteredTestsFrom: aTestCaseCollection +] + { #category : 'accessing' } MTTestFilter >> filteredTestReason [ self subclassResponsibility ] + +{ #category : 'accessing' } +MTTestFilter >> filteredTests [ + + ^ filteredTests +] + +{ #category : 'accessing' } +MTTestFilter >> filteredTests: anObject [ + + filteredTests := anObject +] + +{ #category : 'enumerating' } +MTTestFilter >> filteredTestsFrom: aTestCaseCollection [ + + ^ self subclassResponsibility +] diff --git a/src/MuTalk-Model/MTTimeTestFilter.class.st b/src/MuTalk-Model/MTTimeTestFilter.class.st index 8655df1..a39c6bc 100644 --- a/src/MuTalk-Model/MTTimeTestFilter.class.st +++ b/src/MuTalk-Model/MTTimeTestFilter.class.st @@ -7,9 +7,9 @@ Class { } { #category : 'enumerating' } -MTTimeTestFilter >> filterTests: aTestCaseCollection [ +MTTimeTestFilter >> excludedTestsFrom: aTestCaseCollection [ - ^ aTestCaseCollection select: [ :testCaseReference | + ^ aTestCaseCollection reject: [ :testCaseReference | testCaseReference lastTimeToRun <= condition ] ] @@ -18,3 +18,10 @@ MTTimeTestFilter >> filteredTestReason [ ^ 'Took longer than ', condition printString, ' to run' ] + +{ #category : 'enumerating' } +MTTimeTestFilter >> filteredTestsFrom: aTestCaseCollection [ + + ^ aTestCaseCollection select: [ :testCaseReference | + testCaseReference lastTimeToRun <= condition ] +] From 8e493f1494ec81f067f8b84e484dfcd9bd10631f Mon Sep 17 00:00:00 2001 From: Durieux Pol Date: Thu, 14 Mar 2024 11:47:39 +0100 Subject: [PATCH 10/10] adapt analysis to new structure of test filters & rename everything "filtered tests" to "excluded tests" to match test filters instance variables --- src/MuTalk-Model/MTAnalysis.class.st | 35 +++---------------- src/MuTalk-Model/MTGeneralResult.class.st | 22 ++++++------ ...s.st => MTExcludedTestsPresenter.class.st} | 10 +++--- .../MTGeneralResult.extension.st | 6 ++-- 4 files changed, 24 insertions(+), 49 deletions(-) rename src/MuTalk-SpecUI/{MTFilteredTestsPresenter.class.st => MTExcludedTestsPresenter.class.st} (81%) diff --git a/src/MuTalk-Model/MTAnalysis.class.st b/src/MuTalk-Model/MTAnalysis.class.st index deedcc1..7b0c998 100644 --- a/src/MuTalk-Model/MTAnalysis.class.st +++ b/src/MuTalk-Model/MTAnalysis.class.st @@ -14,8 +14,7 @@ Class { 'stopOnErrorOrFail', 'testSelectionStrategy', 'mutantSelectionStrategy', - 'testFilter', - 'filteredTests' + 'testFilter' ], #category : 'MuTalk-Model-Core', #package : 'MuTalk-Model', @@ -506,36 +505,13 @@ MTAnalysis >> doNotStopOnErrorOrFail [ stopOnErrorOrFail := false ] -{ #category : 'accessing' } -MTAnalysis >> filteredTests [ - - ^ filteredTests -] - -{ #category : 'accessing' } -MTAnalysis >> filteredTests: anObject [ - - filteredTests := anObject -] - -{ #category : 'as yet unclassified' } -MTAnalysis >> filteredTestsFrom: aTestCollection [ - - filteredTests := aTestCollection - inject: OrderedCollection new - into: [ :accumulator :test | - accumulator add: - test -> testFilter filteredTestReason. - accumulator ] -] - { #category : 'results' } MTAnalysis >> generalResult [ ^ MTGeneralResult for: mutantResults timed: elapsedTime - filteredTests: filteredTests + excludedTests: testFilter excludedTests ] { #category : 'running' } @@ -560,10 +536,9 @@ MTAnalysis >> generateMutations [ { #category : 'running' } MTAnalysis >> generateResults [ - | tests | + | filteredTests | mutantResults := OrderedCollection new. - tests := testFilter filterTests: testCases. - self filteredTestsFrom: (testCases copyWithoutAll: tests). + filteredTests := testFilter filterTests: testCases. mutations do: [ :aMutation | (budget exceedsBudgetOn: mutantResults fromTotalMutations: mutations) @@ -571,7 +546,7 @@ MTAnalysis >> generateResults [ logger logStartEvaluating: aMutation. mutantResults add: ((MTMutantEvaluation for: aMutation - using: tests + using: filteredTests following: testSelectionStrategy andConsidering: self coverageAnalysisResult) valueStoppingOnError: stopOnErrorOrFail) ]. diff --git a/src/MuTalk-Model/MTGeneralResult.class.st b/src/MuTalk-Model/MTGeneralResult.class.st index 719ce9d..88029d5 100644 --- a/src/MuTalk-Model/MTGeneralResult.class.st +++ b/src/MuTalk-Model/MTGeneralResult.class.st @@ -4,7 +4,7 @@ Class { #instVars : [ 'particularResults', 'elapsedTime', - 'filteredTests' + 'excludedTests' ], #category : 'MuTalk-Model-Core', #package : 'MuTalk-Model', @@ -22,7 +22,7 @@ MTGeneralResult class >> for: mutantsEvaluationsResults [ ^ self for: mutantsEvaluationsResults timed: Duration new - filteredTests: #( ) + excludedTests: #( ) ] { #category : 'instance creation' } @@ -31,16 +31,16 @@ MTGeneralResult class >> for: mutantsEvaluationsResults timed: anElapsedTime [ ^ self for: mutantsEvaluationsResults timed: anElapsedTime - filteredTests: #( ) + excludedTests: #( ) ] { #category : 'instance creation' } -MTGeneralResult class >> for: mutantsEvaluationsResults timed: anElapsedTime filteredTests: someTests [ +MTGeneralResult class >> for: mutantsEvaluationsResults timed: anElapsedTime excludedTests: someTests [ ^ self new initializeFor: mutantsEvaluationsResults timed: anElapsedTime - filteredTests: someTests; + excludedTests: someTests; yourself ] @@ -55,23 +55,23 @@ MTGeneralResult >> elapsedTime [ ] { #category : 'accessing' } -MTGeneralResult >> filteredTests [ +MTGeneralResult >> excludedTests [ - ^ filteredTests + ^ excludedTests ] { #category : 'accessing' } -MTGeneralResult >> filteredTests: anObject [ +MTGeneralResult >> excludedTests: anObject [ - filteredTests := anObject + excludedTests := anObject ] { #category : 'initialize' } -MTGeneralResult >> initializeFor: mutantsEvaluationsResults timed: anElapsedTime filteredTests: someTests [ +MTGeneralResult >> initializeFor: mutantsEvaluationsResults timed: anElapsedTime excludedTests: someTests [ particularResults := mutantsEvaluationsResults. elapsedTime := anElapsedTime. - filteredTests := someTests + excludedTests := someTests ] { #category : 'testing' } diff --git a/src/MuTalk-SpecUI/MTFilteredTestsPresenter.class.st b/src/MuTalk-SpecUI/MTExcludedTestsPresenter.class.st similarity index 81% rename from src/MuTalk-SpecUI/MTFilteredTestsPresenter.class.st rename to src/MuTalk-SpecUI/MTExcludedTestsPresenter.class.st index 291dd57..3b7c709 100644 --- a/src/MuTalk-SpecUI/MTFilteredTestsPresenter.class.st +++ b/src/MuTalk-SpecUI/MTExcludedTestsPresenter.class.st @@ -1,5 +1,5 @@ Class { - #name : 'MTFilteredTestsPresenter', + #name : 'MTExcludedTestsPresenter', #superclass : 'MTMutationResultsPresenter', #instVars : [ 'testCodePresenter' @@ -9,7 +9,7 @@ Class { } { #category : 'initialization' } -MTFilteredTestsPresenter >> connectPresenters [ +MTExcludedTestsPresenter >> connectPresenters [ tablePresenter whenSelectionChangedDo: [ :selection | | selectedItem | @@ -21,7 +21,7 @@ MTFilteredTestsPresenter >> connectPresenters [ ] { #category : 'layout' } -MTFilteredTestsPresenter >> defaultLayout [ +MTExcludedTestsPresenter >> defaultLayout [ ^ SpPanedLayout newTopToBottom add: tablePresenter; @@ -30,14 +30,14 @@ MTFilteredTestsPresenter >> defaultLayout [ ] { #category : 'initialization' } -MTFilteredTestsPresenter >> initializePresenters [ +MTExcludedTestsPresenter >> initializePresenters [ tablePresenter := self newTable. tablePresenter items: model; activateOnSingleClick; addColumn: (SpStringTableColumn - title: 'FilteredTests' + title: 'ExcludedTests' evaluated: [ :each | each key ]); addColumn: (SpStringTableColumn diff --git a/src/MuTalk-SpecUI/MTGeneralResult.extension.st b/src/MuTalk-SpecUI/MTGeneralResult.extension.st index a19f3f0..2412548 100644 --- a/src/MuTalk-SpecUI/MTGeneralResult.extension.st +++ b/src/MuTalk-SpecUI/MTGeneralResult.extension.st @@ -1,10 +1,10 @@ Extension { #name : 'MTGeneralResult' } { #category : '*MuTalk-SpecUI' } -MTGeneralResult >> filteredTestsExtension [ +MTGeneralResult >> excludedTestsExtension [ - - ^ MTFilteredTestsPresenter on: filteredTests + + ^ MTExcludedTestsPresenter on: excludedTests ] { #category : '*MuTalk-SpecUI' }