# HG changeset patch # User sr # Date 1507641363 -7200 # Node ID 84b58f2602d93882e5fb7249e66759e6b009e1c0 # Parent 84e6ade7aad95461751be6d1d649132708c05282 #BUGFIX by sr class: RunUnitTests class added: #runWithCompiledUnitTestClasses: diff -r 84e6ade7aad9 -r 84b58f2602d9 quickSelfTest/RunUnitTests.st --- a/quickSelfTest/RunUnitTests.st Tue Oct 10 15:09:25 2017 +0200 +++ b/quickSelfTest/RunUnitTests.st Tue Oct 10 15:16:03 2017 +0200 @@ -116,6 +116,97 @@ self logInfo:('%1 passed' bindWith:result passedCount). self logInfo:('%1 failed' bindWith:result failureCount). self logInfo:('%1 errors' bindWith:result errorCount). +! + +runWithCompiledUnitTestClasses:useCompiledUnitTestClasses + |doRunSpecificUnitTests unitTestSuiteName excludedUnitTestClassNames corruptedUnitTestClassNames + cmdArgs + unitTestSuite + eachClassName eachClass + result index settingsFilePathName| + + doRunSpecificUnitTests := false. + unitTestSuiteName := 'All Unit Tests'. + excludedUnitTestClassNames := self excludedUnitTestClassNamesForAll. + corruptedUnitTestClassNames := self corruptedUnitTestClassNames. + + cmdArgs := Smalltalk commandLineArguments. + 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. + ]. + + (cmdArgs includes:'--runOnlyExpeccoUnitTests') ifTrue:[ + self logInfo:'configured to run expecco unit tests only'. + doRunSpecificUnitTests := true. + unitTestSuiteName := 'expecco Unit Tests'. + excludedUnitTestClassNames := self excludedUnitTestClassNamesForExpecco. + ]. + + doRunSpecificUnitTests ifFalse:[ + self logInfo:'configured to run all available unit tests'. + ]. + + self logInfo:'collecting unit test classes to run'. + unitTestSuite := TestSuite named:unitTestSuiteName. + +Transcript showCR:'1 ', (Smalltalk at: #'stx_goodies_regression') printString. +Transcript showCR:'2 ', (Smalltalk at: #'stx_goodies_regression') classNamesAndAttributes printString. + + (Smalltalk at: #'stx_goodies_regression') classNamesAndAttributes do:[:eachClassNameAndAttributes | + eachClassNameAndAttributes isSymbol ifTrue:[ + eachClassName := eachClassNameAndAttributes. + ] ifFalse:[ + eachClassName := eachClassNameAndAttributes + firstIfEmpty:nil. + ]. + + (excludedUnitTestClassNames includes:eachClassName) ifFalse:[ + (corruptedUnitTestClassNames includes:eachClassName) ifTrue:[ + self + logWarning:('corrupted unit test class detected, please fix #%1' + bindWith:eachClassName). + ] ifFalse:[ + eachClassName notNil ifTrue:[ + eachClass := Smalltalk + fileInClass:eachClassName + package:'stx:goodies/regression'. + + eachClass notNil ifTrue:[ + eachClass isTestCaseLike ifTrue:[ + unitTestSuite addTest:eachClass suite. + ]. + ]. + ]. + ]. + ]. + ]. + + self + 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'). + + self logInfo:'generating report'. + TestResultReporter + report:result + format:#xml_jUnit + as:'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). ! ! !RunUnitTests class methodsFor:'constants'!