Concerning the expectation matchers, there is a series of rewrite rules on the class side of PhexMatcher
. This screencast explains how to use RB s rewrite engine: Code Critics in OB (OB Screencast 3).
First use these rules
RBParseTreeRewriter new
replace: self assert: [ `@expression ] with: self assert: `@expression ;
replace: self deny: `@expression with: self assert: `@expression not ;
yourself.
Then use these rules
RBParseTreeRewriter new
replace: self assert: `@value = `@expected with: `@value should = `@expected ;
replace: self assert: `@value ~= `@expected with: `@value should not = `@expected ;
replace: self assert: `@value > `@expected with: `@value should > `@expected ;
replace: self assert: `@value < `@expected with: `@value should < `@expected ;
replace: self assert: `@value >= `@expected with: `@value should >= `@expected ;
replace: self assert: `@value <= `@expected with: `@value should <= `@expected ;
replace: self assert: (`@value isKindOf: `@type) with: `@value should beKindOf: `@type ;
replace: self assert: `@expression isNil with: `@expression should be isNil ;
replace: self assert: `@expression notNil with: `@expression should be notNil ;
replace: self assert: `@expression `test not with: `@expression should not be `test
when: [:node | node arguments first receiver selector matchesRegex: (is|has|not).+|atEnd ];
replace: self assert: `@expression `test with: `@expression should be `test
when: [:node | node arguments first selector matchesRegex: (is|has|not).+|atEnd ];
replace: self assert: (`@collection includes: `@element) not with: `@collection should not be includes: `@element ;
replace: self assert: (`@collection includes: `@element) with: `@collection should be includes: `@element ;
yourself.
Concerning the introduction of dependencies between test, you have to rewrite your tests by Hand. For JExample there is JUnit2JExample but alas there is not automagic migration for Smalltalk (yet).
PS: if you are using the latest Pharo image you must use OB and revert the OB-Refactory package to get scoped rewrite rules working. Just execute
SystemBrowser default: OBSystemBrowserAdaptor.
Gofer new
wiresong: ob ;
addPackage: OB-Refactory ;
revert