#BUGFIX by sr
class: RunUnitTests
class definition
class: RunUnitTests class
added:
#corruptedUnitTestClassNames
#documentation
#excludedUnitTestClassNamesForAll
#excludedUnitTestClassNamesForExpecco
#log:type:
#logInfo:
#logWarning:
#run
#runWithCompiledUnitTestClasses:
#runWithCompiledUnitTestClasses:arguments:debug:
#version
#version_CVS
--- a/quickSelfTest/RunUnitTests.st Thu Oct 12 13:04:36 2017 +0200
+++ b/quickSelfTest/RunUnitTests.st Thu Oct 12 13:22:28 2017 +0200
@@ -36,6 +36,20 @@
!
runWithCompiledUnitTestClasses:useCompiledUnitTestClasses
+ |cmdArgs|
+
+ cmdArgs := Smalltalk commandLineArguments.
+
+ self
+ runWithCompiledUnitTestClasses:useCompiledUnitTestClasses
+ arguments:cmdArgs
+ debug:(cmdArgs includes:'--debug')
+!
+
+runWithCompiledUnitTestClasses:useCompiledUnitTestClasses
+ arguments:arguments
+ debug:debug
+
|doRunSpecificUnitTests unitTestSuiteName excludedUnitTestClassNames corruptedUnitTestClassNames
cmdArgs
unitTestSuite
@@ -48,143 +62,150 @@
excludedUnitTestClassNames := self excludedUnitTestClassNamesForAll.
corruptedUnitTestClassNames := self corruptedUnitTestClassNames.
- cmdArgs := Smalltalk commandLineArguments.
+ cmdArgs := arguments.
(cmdArgs includesAny:#('--help' '/?')) ifTrue:[
- Stdout showCR:'--help............................this infromation'.
- Stdout showCR:'--settingsFile....................path to a stx settings file (may to set compiler options)'.
- Stdout showCR:'--runOnlyExpeccoUnitTests.........run only expecco related test cases'.
- Stdout showCR:'--resultFile......................path to a file for storing the result as xml'.
- Stdout showCR:'--forceTestCase...................class name of a test case (only this test case will be executed)'.
+ Stdout showCR:'--help............................this infromation'.
+ Stdout showCR:'--settingsFile....................path to a stx settings file (may to set compiler options)'.
+ Stdout showCR:'--runOnlyExpeccoUnitTests.........run only expecco related test cases'.
+ Stdout showCR:'--resultFile......................path to a file for storing the result as xml'.
+ Stdout showCR:'--forceTestCase...................class name of a test case (only this test case will be executed)'.
- Smalltalk exit.
+ Smalltalk exit.
].
index := cmdArgs indexOf:'--settingsFile'.
index > 0 ifTrue:[
- settingsFilePathName := cmdArgs at:index + 1.
- self logInfo:'load settings file: ', settingsFilePathName printString.
- settingsFilePathName asFilename fileIn.
- self logInfo:'ParserFlags makeCommand: ', ParserFlags makeCommand printString.
+ settingsFilePathName := cmdArgs at:index + 1.
+ self logInfo:'load settings file: ', settingsFilePathName printString.
+ settingsFilePathName asFilename fileIn.
+ self logInfo:'ParserFlags makeCommand: ', ParserFlags makeCommand printString.
].
(cmdArgs includes:'--runOnlyExpeccoUnitTests') ifTrue:[
- self logInfo:'configured to run expecco unit tests only'.
- doRunSpecificUnitTests := true.
- unitTestSuiteName := 'expecco Unit Tests'.
- excludedUnitTestClassNames := self excludedUnitTestClassNamesForExpecco.
+ self logInfo:'configured to run expecco unit tests only'.
+ doRunSpecificUnitTests := true.
+ unitTestSuiteName := 'expecco Unit Tests'.
+ excludedUnitTestClassNames := self excludedUnitTestClassNamesForExpecco.
].
index := cmdArgs indexOf:'--resultFile'.
index > 0 ifTrue:[
- resultFilePathName := cmdArgs at:index + 1.
- self logInfo:'set custom result file: ', resultFilePathName printString.
+ resultFilePathName := cmdArgs at:index + 1.
+ self logInfo:'set custom result file: ', resultFilePathName printString.
].
index := cmdArgs indexOf:'--forceTestCase'.
index > 0 ifTrue:[
- forceTestCase := cmdArgs at:index + 1.
- self logInfo:'set force test case: ', forceTestCase printString.
+ forceTestCase := cmdArgs at:index + 1.
+ self logInfo:'set force test case: ', forceTestCase printString.
].
doRunSpecificUnitTests ifFalse:[
- self logInfo:'configured to run all available unit tests'.
+ self logInfo:'configured to run all available unit tests'.
].
self logInfo:'collecting unit test classes to run'.
unitTestSuite := TestSuite named:unitTestSuiteName.
(Smalltalk at: #'stx_goodies_regression') classNamesAndAttributes do:[:eachClassNameAndAttributes |
- eachClassNameAndAttributes isSymbol ifTrue:[
- eachClassName := eachClassNameAndAttributes.
- ] ifFalse:[
- eachClassName := eachClassNameAndAttributes
- firstIfEmpty:nil.
- ].
+ eachClassNameAndAttributes isSymbol ifTrue:[
+ eachClassName := eachClassNameAndAttributes.
+ ] ifFalse:[
+ eachClassName := eachClassNameAndAttributes
+ firstIfEmpty:nil.
+ ].
- (excludedUnitTestClassNames includes:eachClassName) ifTrue:[
- self
- logInfo:('excluded unit test class "%1".'
- bindWith:eachClassName).
- ] ifFalse:[
- (corruptedUnitTestClassNames includes:eachClassName) ifTrue:[
- self
- logWarning:('corrupted unit test class detected, please fix #%1'
- bindWith:eachClassName).
- ] ifFalse:[
- (eachClassName notNil
- and:[
- "/ skip non test case classes
- (#(
- 'stx_goodies_regression'
- ) includes:eachClassName) not
- and:[
- forceTestCase isNil
- or:[forceTestCase = eachClassName
- or:[forceTestCase = ((eachClassName subStrings:'::') lastIfEmpty:nil)]]
- ]]) ifTrue:[
- eachClass := Smalltalk at:eachClassName.
+ (excludedUnitTestClassNames includes:eachClassName) ifTrue:[
+ self
+ logInfo:('excluded unit test class "%1".'
+ bindWith:eachClassName).
+ ] ifFalse:[
+ (corruptedUnitTestClassNames includes:eachClassName) ifTrue:[
+ self
+ logWarning:('corrupted unit test class detected, please fix #%1'
+ bindWith:eachClassName).
+ ] ifFalse:[
+ (eachClassName notNil
+ and:[
+ "/ skip non test case classes
+ (#(
+ 'stx_goodies_regression'
+ ) includes:eachClassName) not
+ and:[
+ forceTestCase isNil
+ or:[forceTestCase = eachClassName
+ or:[forceTestCase = ((eachClassName subStrings:'::') lastIfEmpty:nil)]]
+ ]]) ifTrue:[
+ eachClass := Smalltalk at:eachClassName.
- useCompiledUnitTestClasses ifFalse:[
- "here we want test the jitter code
- therfor we file in, exit if the class is already present somwhow"
- eachClass notNil ifTrue:[
- self
- logWarning:('Unit test class "%1" was already present before file in.'
- bindWith:eachClassName).
+ useCompiledUnitTestClasses ifFalse:[
+ "here we want test the jitter code
+ therfor we file in, exit if the class is already present somwhow"
+ eachClass notNil ifTrue:[
+ self
+ logWarning:('Unit test class "%1" was already present before file in.'
+ bindWith:eachClassName).
- Smalltalk exit:1.
- ].
+ Smalltalk exit:1.
+ ].
- eachClass := Smalltalk
- fileInClass:eachClassName
- package:'stx:goodies/regression'.
- ].
+ eachClass := Smalltalk
+ fileInClass:eachClassName
+ package:'stx:goodies/regression'.
+ ].
- eachClass notNil ifTrue:[
- eachClass isTestCaseLike ifTrue:[
- self
- logInfo:('added unit test class "%1".'
- bindWith:eachClassName).
+ eachClass notNil ifTrue:[
+ eachClass isTestCaseLike ifTrue:[
+ self
+ logInfo:('added unit test class "%1".'
+ bindWith:eachClassName).
- unitTestSuite addTest:eachClass suite.
- ].
- ] ifFalse:[
- self
- logWarning:('unit test class "%1" is not loaded.'
- bindWith:eachClassName).
- ].
- ] ifFalse:[
- self
- logInfo:('skipped unit test class "%1".'
- bindWith:eachClassName).
- ].
- ].
- ].
+ unitTestSuite addTest:eachClass suite.
+ ].
+ ] ifFalse:[
+ self
+ logWarning:('unit test class "%1" is not loaded.'
+ bindWith:eachClassName).
+ ].
+ ] ifFalse:[
+ self
+ logInfo:('skipped unit test class "%1".'
+ bindWith:eachClassName).
+ ].
+ ].
+ ].
].
self
- logInfo:('%1 unit test classes collected'
- bindWith:unitTestSuite tests size).
+ logInfo:('%1 unit test classes collected'
+ bindWith:unitTestSuite tests size).
self logInfo:'starting unit tests'.
result := unitTestSuite
- run:TestResultStX new
- beforeEachDo:[:test | self logInfo:'performing unit test ', test printString]
- afterEachDo:[:test| ]
- debug:(cmdArgs includes:'--debug').
+ run:TestResultStX new
+ beforeEachDo:[:test | self logInfo:'performing unit test ', test printString]
+ afterEachDo:[:test| ]
+ debug:debug.
self logInfo:'generating report'.
TestResultReporter
- report:result
- format:#xml_jUnit
- as:resultFilePathName ? 'testresult.xml'.
+ report:result
+ format:#xml_jUnit
+ as:resultFilePathName ? 'testresult.xml'.
self logInfo:'summary:'.
self logInfo:('%1 tests' bindWith:result runCount).
self logInfo:('%1 passed' bindWith:result passedCount).
self logInfo:('%1 failed' bindWith:result failureCount).
self logInfo:('%1 errors' bindWith:result errorCount).
+
+ "
+ self
+ runWithCompiledUnitTestClasses:true
+ arguments:#('--runOnlyExpeccoUnitTests')
+ debug:true
+ "
! !
!RunUnitTests class methodsFor:'constants'!
@@ -263,3 +284,4 @@
version_CVS
^ '$Header$'
! !
+