#FEATURE by Stefan Reise
authorsr
Tue, 03 Dec 2019 11:04:55 +0100
changeset 557 55d699399793
parent 556 444f38c996cc
child 558 fda9eca926a9
#FEATURE by Stefan Reise added #doRunExpeccoRelatedUnitTestsOnly
quickSelfTest/RunUnitTests.st
--- a/quickSelfTest/RunUnitTests.st	Fri Jul 19 17:56:23 2019 +0200
+++ b/quickSelfTest/RunUnitTests.st	Tue Dec 03 11:04:55 2019 +0100
@@ -6,7 +6,7 @@
 
 Object subclass:#RunUnitTests
 	instanceVariableNames:''
-	classVariableNames:''
+	classVariableNames:'DoRunExpeccoRelatedUnitTestsOnly'
 	poolDictionaries:''
 	category:'tests-Regression'
 !
@@ -36,6 +36,14 @@
 "
 ! !
 
+!RunUnitTests class methodsFor:'accessing'!
+
+doRunExpeccoRelatedUnitTestsOnly
+    ^ DoRunExpeccoRelatedUnitTestsOnly ? false
+
+    "Created: / 03-12-2019 / 11:03:26 / Stefan Reise"
+! !
+
 !RunUnitTests class methodsFor:'actions'!
 
 run
@@ -75,58 +83,59 @@
 
     index := arguments indexOf:'--settingsFile'.
     index > 0 ifTrue:[
-	settingsFilePathName := arguments at:index + 1.
-	self logInfo:'load settings file: %1' with:settingsFilePathName.
-	settingsFilePathName asFilename fileIn.
-	self logInfo:'makeCommand (from ParserFlags) is: %1' with:(ParserFlags makeCommand).
+        settingsFilePathName := arguments at:index + 1.
+        self logInfo:'load settings file: %1' with:settingsFilePathName.
+        settingsFilePathName asFilename fileIn.
+        self logInfo:'makeCommand (from ParserFlags) is: %1' with:(ParserFlags makeCommand).
     ].
 
     (arguments 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'.
+        DoRunExpeccoRelatedUnitTestsOnly := true.
+        doRunSpecificUnitTests := true.
+        unitTestSuiteName := 'expecco Unit Tests'.
+        excludedUnitTestClassNames := self excludedUnitTestClassNamesForExpecco.
     ].
 
     index := arguments indexOf:'--resultFile'.
     index > 0 ifTrue:[
-	resultFilePathName := arguments at:index + 1.
-	self logInfo:'set custom result file: %1' with:resultFilePathName.
+        resultFilePathName := arguments at:index + 1.
+        self logInfo:'set custom result file: %1' with:resultFilePathName.
     ].
 
     [
-	(index := arguments indexOf:'--run') > 0
+        (index := arguments indexOf:'--run') > 0
     ] whileTrue:[
-	runTestCases add:(arguments at:index + 1).
-	self logInfo:'run test: "%1"' with:(arguments at:index + 1).
-	arguments removeIndex:index + 1.
-	arguments removeIndex:index.
+        runTestCases add:(arguments at:index + 1).
+        self logInfo:'run test: "%1"' with:(arguments at:index + 1).
+        arguments removeIndex:index + 1.
+        arguments removeIndex:index.
     ].
 
     [
-	(index := arguments indexOf:'--exclude') > 0
+        (index := arguments indexOf:'--exclude') > 0
     ] whileTrue:[
-	excludedUnitTestClassNames add:(arguments at:index + 1).
-	self logInfo:'exclude test: "%1"' with:(arguments at:index + 1).
-	arguments removeIndex:index + 1.
-	arguments removeIndex:index.
+        excludedUnitTestClassNames add:(arguments at:index + 1).
+        self logInfo:'exclude test: "%1"' with:(arguments at:index + 1).
+        arguments removeIndex:index + 1.
+        arguments removeIndex:index.
     ].
 
     index := arguments indexOf:'--forceTestCase'.
     index > 0 ifTrue:[
-	forceTestCase := arguments at:index + 1.
-	self logInfo:'run single test (forceTestCase): "%1"' with:forceTestCase.
+        forceTestCase := arguments at:index + 1.
+        self logInfo:'run single test (forceTestCase): "%1"' with:forceTestCase.
     ].
 
     index := arguments indexOf:'--testRunner'.
     index > 0 ifTrue:[
-	arguments removeIndex:index.
-	forceTestCase := #'RunUnitTests::RunnerSelfTest'.
-	self logInfo:'execute runner self test'.
+        arguments removeIndex:index.
+        forceTestCase := #'RunUnitTests::RunnerSelfTest'.
+        self logInfo:'execute runner self test'.
     ].
 
     (doRunSpecificUnitTests not and:[forceTestCase isNil]) ifTrue:[
-	self logInfo:'configured to run all available unit tests'.
+        self logInfo:'configured to run all available unit tests'.
     ].
 
     "/ self logInfo:'collecting tests to run'.
@@ -136,120 +145,120 @@
     possibleClassNames add:#'RunUnitTests::RunnerSelfTest'.
 
     possibleClassNames do:[:eachClassName |
-	(excludedUnitTestClassNames includes:eachClassName) ifTrue:[
-	    self logInfo:'exclude test "%1".' with:eachClassName.
-	] ifFalse:[
-	    (runTestCases notEmptyOrNil and:[(runTestCases includes:eachClassName) not]) ifTrue:[
-		self logInfo:'not selected: "%1".' with:eachClassName.
-	    ] ifFalse:[
-		(corruptedUnitTestClassNames includes:eachClassName) ifTrue:[
-		    self logWarning:'test "%1" is marked as corrupted, please fix' with:eachClassName.
-		] ifFalse:[
-		    (eachClassName notNil
-		    and:[
-			"/ skip non test class 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:'exclude test "%1".' with:eachClassName.
+        ] ifFalse:[
+            (runTestCases notEmptyOrNil and:[(runTestCases includes:eachClassName) not]) ifTrue:[
+                self logInfo:'not selected: "%1".' with:eachClassName.
+            ] ifFalse:[
+                (corruptedUnitTestClassNames includes:eachClassName) ifTrue:[
+                    self logWarning:'test "%1" is marked as corrupted, please fix' with:eachClassName.
+                ] ifFalse:[
+                    (eachClassName notNil
+                    and:[
+                        "/ skip non test class 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 to test the jitter code
-			     therfore we file in, exit if the class is already present somwhow"
-			    eachClass notNil ifTrue:[
-				self logWarning:'test class "%1" was already present as stc-compiled class before file in.' with:eachClassName.
-				Smalltalk isSmalltalkDevelopmentSystem ifFalse:[
-				    Smalltalk exit:1.
-				].
-			    ].
+                        useCompiledUnitTestClasses ifFalse:[
+                            "here we want to test the jitter code
+                             therfore we file in, exit if the class is already present somwhow"
+                            eachClass notNil ifTrue:[
+                                self logWarning:'test class "%1" was already present as stc-compiled class before file in.' with:eachClassName.
+                                Smalltalk isSmalltalkDevelopmentSystem ifFalse:[
+                                    Smalltalk exit:1.
+                                ].
+                            ].
 
-			    eachClass := Smalltalk
-				fileInClass:eachClassName
-				package:'stx:goodies/regression'.
-			].
+                            eachClass := Smalltalk
+                                fileInClass:eachClassName
+                                package:'stx:goodies/regression'.
+                        ].
 
-			eachClass notNil ifTrue:[
-			    (eachClass isTestCaseLike
-			    and:[eachClass isAbstract not]) ifTrue:[
-				self logInfo:'added test "%1".' with:eachClassName.
-				unitTestSuite addTest:eachClass suite.
-			    ] ifFalse:[
-				self logInfo:'not a test "%1" (abstract or something else).'
-					with:eachClassName.
-			    ].
-			] ifFalse:[
-			    self logWarning:'test class "%1" is not loaded.' with:eachClassName.
-			].
-		    ] ifFalse:[
-			self logInfo:'skipped test "%1".' with:eachClassName.
-		    ].
-		].
-	    ].
-	].
+                        eachClass notNil ifTrue:[
+                            (eachClass isTestCaseLike
+                            and:[eachClass isAbstract not]) ifTrue:[
+                                self logInfo:'added test "%1".' with:eachClassName.
+                                unitTestSuite addTest:eachClass suite.
+                            ] ifFalse:[
+                                self logInfo:'not a test "%1" (abstract or something else).'
+                                        with:eachClassName.
+                            ].
+                        ] ifFalse:[
+                            self logWarning:'test class "%1" is not loaded.' with:eachClassName.
+                        ].
+                    ] ifFalse:[
+                        self logInfo:'skipped test "%1".' with:eachClassName.
+                    ].
+                ].
+            ].
+        ].
     ].
 
     self logInfo:'%1 unit test(s) collected' with:(unitTestSuite tests size).
 
     self logInfo:'start tests...'.
     [
-	result :=
-	    unitTestSuite
-		run:TestResultStX new
-		beforeEachDo:[:test |
-		    self logInfo:'Run "%1"' with:test printString
-		]
-		afterEachDo:[:test :result|
-		    |execTime status|
+        result :=
+            unitTestSuite
+                run:TestResultStX new
+                beforeEachDo:[:test |
+                    self logInfo:'Run "%1"' with:test printString
+                ]
+                afterEachDo:[:test :result|
+                    |execTime status|
 
-		    execTime := result lastOutcome executionTimeDuration.
-		    status := result lastOutcome result.
-		    self logInfo:'   %1 (%2)' with:status with:execTime.
-		    (status == TestResult stateFail or:[status == TestResult stateError]) ifTrue:[
-			self logInfo:'   ==================='.
-		    ]
-		]
-		debug:debug.
+                    execTime := result lastOutcome executionTimeDuration.
+                    status := result lastOutcome result.
+                    self logInfo:'   %1 (%2)' with:status with:execTime.
+                    (status == TestResult stateFail or:[status == TestResult stateError]) ifTrue:[
+                        self logInfo:'   ==================='.
+                    ]
+                ]
+                debug:debug.
     ] ifCurtailed:[
-	self logWarning:'aborted in:.'.
-	thisContext fullPrintAllOn:Stderr.
+        self logWarning:'aborted in:.'.
+        thisContext fullPrintAllOn:Stderr.
     ].
 
     self logInfo:'tests finished.'.
 
     self logInfo:'generating xml report...'.
     [
-	TestResultReporter
-	    report:result
-	    format:#xml_jUnit
-	    as:(resultFilePathName ? 'testresult.xml').
+        TestResultReporter
+            report:result
+            format:#xml_jUnit
+            as:(resultFilePathName ? 'testresult.xml').
     ] on:Error do:[:ex |
-	self logWarning:'error while generating xml report: %1' with:ex description.
-	self logWarning:'in: %1' with:(ex suspendedContext fullPrintAllString).
-	Smalltalk isSmalltalkDevelopmentSystem ifFalse:[
-	    Smalltalk exit:1.
-	].
+        self logWarning:'error while generating xml report: %1' with:ex description.
+        self logWarning:'in: %1' with:(ex suspendedContext fullPrintAllString).
+        Smalltalk isSmalltalkDevelopmentSystem ifFalse:[
+            Smalltalk exit:1.
+        ].
     ].
 
     self logInfo:'xml report generated in %1' with:(resultFilePathName ? 'testresult.xml') asFilename pathName.
 
     self logInfo:'Summary:'.
     self logInfo:('  %1 tests, %2 run (%3 skipped) / %4 passed, %5 failed, %6 errors'
-		bindWith:result tests size
-		with:result runCount
-		with:result skippedCount
-		with:result passedCount
-		with:result failureCount
-		with:result errorCount).
+                bindWith:result tests size
+                with:result runCount
+                with:result skippedCount
+                with:result passedCount
+                with:result failureCount
+                with:result errorCount).
     "/ self logInfo:'  exec. time: %1' with:(TimeDuration fromSeconds:result executionTime).
 
     "Modified (format): / 16-05-2018 / 13:59:47 / sr"
     "Modified: / 26-03-2019 / 19:00:38 / Claus Gittinger"
-    "Modified: / 06-06-2019 / 10:02:52 / Stefan Reise"
+    "Modified: / 03-12-2019 / 11:03:42 / Stefan Reise"
 ! !
 
 !RunUnitTests class methodsFor:'constants'!