Skip to content

Commit

Permalink
add rule to avoid that TestCase rely on Initialize
Browse files Browse the repository at this point in the history
this pull request propose a rule to validate that users do not use initialize but setUp.
#5792
  • Loading branch information
Hely committed Apr 23, 2024
1 parent 930ce39 commit 79948e9
Show file tree
Hide file tree
Showing 2 changed files with 84 additions and 0 deletions.
31 changes: 31 additions & 0 deletions src/General-Rules-Tests/ReUseSetUpRuleTest.class.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
Class {
#name : 'ReUseSetUpRuleTest',
#superclass : 'ReAbstractRuleTestCase',
#category : 'General-Rules-Tests-Migrated',
#package : 'General-Rules-Tests',
#tag : 'Migrated'
}

{ #category : 'initialization' }
ReUseSetUpRuleTest >> initialize [
]

{ #category : 'tests' }
ReUseSetUpRuleTest >> testRule [

| critiques |
self class compile: 'initialize'.
critiques := self myCritiquesOnClass: self class.
self assert: critiques size equals: 1.
[ "code of the test" ] ensure: [ (self class >> #initialize) removeFromSystem ]
]

{ #category : 'tests' }
ReUseSetUpRuleTest >> testRuleNotViolated [

| critiques |
self class compile: 'setUp'.
critiques := self myCritiquesOnClass: self class.
self assertEmpty: critiques.
[ "code of the test" ] ensure: [ (self class >> #setUp) removeFromSystem ]
]
53 changes: 53 additions & 0 deletions src/General-Rules/ReUseSetUpRule.class.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
"
this smell arise when we use initialize instead of setUp in a TestCase
"
Class {
#name : 'ReUseSetUpRule',
#superclass : 'ReAbstractRule',
#category : 'General-Rules-Migrated',
#package : 'General-Rules',
#tag : 'Migrated'
}

{ #category : 'testing - interest' }
ReUseSetUpRule class >> checksClass [
^ true
]

{ #category : 'manifest' }
ReUseSetUpRule class >> uniqueIdentifierName [
"This number should be unique and should change only when the rule completely change semantics"

^ 'UseSetUpRule'
]

{ #category : 'running' }
ReUseSetUpRule >> basicCheck: aClass [

aClass isTestCase ifFalse: [ ^ false ].
^ aClass selectors includes: #initialize
]

{ #category : 'accessing' }
ReUseSetUpRule >> group [

^ 'Design Flaws'
]

{ #category : 'testing' }
ReUseSetUpRule >> isRewriteRule [

^ true
]

{ #category : 'accessing' }
ReUseSetUpRule >> name [

^ 'Uses setUp instead of initialize for Test class.'
]

{ #category : 'accessing' }
ReUseSetUpRule >> severity [

^ #error
]

0 comments on commit 79948e9

Please sign in to comment.