quickSelfTest/RunUnitTests.st
author sr
Fri, 29 Sep 2017 11:54:46 +0200
changeset 346 041a1411366c
parent 345 e59d3b6f2391
child 347 e8c44ab3dbcd
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
335
aaa1ed543bd0 *** empty log message ***
sr
parents: 329
diff changeset
     1
'From Smalltalk/X, Version:7.1.0.0 on 12-09-2017 at 13:33:27'                   !
329
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
     2
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
     3
"{ Package: 'stx:goodies/regression' }"
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
     4
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
     5
"{ NameSpace: Smalltalk }"
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
     6
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
     7
Object subclass:#RunUnitTests
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
     8
	instanceVariableNames:''
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
     9
	classVariableNames:''
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    10
	poolDictionaries:''
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    11
	category:'tests-Regression'
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    12
!
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    13
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    14
!RunUnitTests class methodsFor:'documentation'!
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    15
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    16
documentation
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    17
"
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    18
    documentation to be added.
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    19
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    20
    [author:]
336
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
    21
	sr
329
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    22
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    23
    [instance variables:]
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    24
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    25
    [class variables:]
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    26
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    27
    [see also:]
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    28
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    29
"
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    30
! !
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    31
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    32
!RunUnitTests class methodsFor:'actions'!
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    33
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    34
run
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    35
    |doRunSpecificUnitTests unitTestSuiteName excludedUnitTestClassNames corruptedUnitTestClassNames
336
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
    36
     cmdArgs
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
    37
     unitTestSuite
329
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    38
     eachClassName eachClass
346
041a1411366c *** empty log message ***
sr
parents: 345
diff changeset
    39
     result index|
329
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    40
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    41
    doRunSpecificUnitTests := false.
336
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
    42
    unitTestSuiteName := 'All Unit Tests'.
329
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    43
    excludedUnitTestClassNames := self excludedUnitTestClassNamesForAll.
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    44
    corruptedUnitTestClassNames := self corruptedUnitTestClassNames.
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    45
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    46
    cmdArgs := Smalltalk commandLineArguments.
346
041a1411366c *** empty log message ***
sr
parents: 345
diff changeset
    47
    index := cmdArgs indexOf:'--settingsFile'.
041a1411366c *** empty log message ***
sr
parents: 345
diff changeset
    48
    index > 0 ifTrue:[
041a1411366c *** empty log message ***
sr
parents: 345
diff changeset
    49
	(cmdArgs at:index + 1) asFilename readIn.
041a1411366c *** empty log message ***
sr
parents: 345
diff changeset
    50
    ].
041a1411366c *** empty log message ***
sr
parents: 345
diff changeset
    51
329
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    52
    (cmdArgs includes:'--runOnlyExpeccoUnitTests') ifTrue:[
336
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
    53
	self logInfo:'configured to run expecco unit tests only'.
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
    54
	doRunSpecificUnitTests := true.
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
    55
	unitTestSuiteName := 'expecco Unit Tests'.
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
    56
	excludedUnitTestClassNames := self excludedUnitTestClassNamesForExpecco.
329
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    57
    ].
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    58
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    59
    doRunSpecificUnitTests ifFalse:[
336
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
    60
	self logInfo:'configured to run all available unit tests'.
329
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    61
    ].
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    62
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    63
    self logInfo:'collecting unit test classes to run'.
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    64
    unitTestSuite := TestSuite named:unitTestSuiteName.
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    65
    (Smalltalk at: #'stx_goodies_regression') classNamesAndAttributes do:[:eachClassNameAndAttributes |
336
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
    66
	eachClassNameAndAttributes isSymbol ifTrue:[
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
    67
	    eachClassName := eachClassNameAndAttributes.
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
    68
	] ifFalse:[
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
    69
	    eachClassName := eachClassNameAndAttributes
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
    70
		firstIfEmpty:nil.
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
    71
	].
329
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    72
345
e59d3b6f2391 *** empty log message ***
sr
parents: 344
diff changeset
    73
	(excludedUnitTestClassNames includes:eachClassName) ifFalse:[
e59d3b6f2391 *** empty log message ***
sr
parents: 344
diff changeset
    74
	    (corruptedUnitTestClassNames includes:eachClassName) ifTrue:[
346
041a1411366c *** empty log message ***
sr
parents: 345
diff changeset
    75
		self
345
e59d3b6f2391 *** empty log message ***
sr
parents: 344
diff changeset
    76
		    logWarning:('corrupted unit test class detected, please fix #%1'
346
041a1411366c *** empty log message ***
sr
parents: 345
diff changeset
    77
			bindWith:eachClassName).
345
e59d3b6f2391 *** empty log message ***
sr
parents: 344
diff changeset
    78
	    ] ifFalse:[
346
041a1411366c *** empty log message ***
sr
parents: 345
diff changeset
    79
Stdout nextPutLine:eachClassName printString.
041a1411366c *** empty log message ***
sr
parents: 345
diff changeset
    80
			(eachClassName notNil
041a1411366c *** empty log message ***
sr
parents: 345
diff changeset
    81
and:[eachClassName = 'RegressionTests::ScaledDecimalTest']) ifTrue:[
345
e59d3b6f2391 *** empty log message ***
sr
parents: 344
diff changeset
    82
				eachClass := Smalltalk
e59d3b6f2391 *** empty log message ***
sr
parents: 344
diff changeset
    83
					fileInClass:eachClassName
e59d3b6f2391 *** empty log message ***
sr
parents: 344
diff changeset
    84
					package:'stx:goodies/regression'.
329
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    85
345
e59d3b6f2391 *** empty log message ***
sr
parents: 344
diff changeset
    86
				eachClass notNil ifTrue:[
e59d3b6f2391 *** empty log message ***
sr
parents: 344
diff changeset
    87
				eachClass isTestCaseLike ifTrue:[
e59d3b6f2391 *** empty log message ***
sr
parents: 344
diff changeset
    88
					unitTestSuite addTest:eachClass suite.
e59d3b6f2391 *** empty log message ***
sr
parents: 344
diff changeset
    89
				].
336
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
    90
		    ].
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
    91
		].
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
    92
	    ].
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
    93
	].
329
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    94
    ].
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    95
336
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
    96
    self
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
    97
	logInfo:('%1 unit test classes collected'
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
    98
	    bindWith:unitTestSuite tests size).
329
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    99
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   100
    self logInfo:'starting unit tests'.
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   101
    result := unitTestSuite
336
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
   102
	run:TestResultStX new
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
   103
	beforeEachDo:[:test | self logInfo:'performing unit test ', test printString]
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
   104
	afterEachDo:[:test| ]
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
   105
	debug:(cmdArgs includes:'--debug').
329
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   106
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   107
    self logInfo:'generating report'.
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   108
    TestResultReporter
336
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
   109
	report:result
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
   110
	format:#xml_jUnit
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
   111
	as:'testresult.xml'.
329
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   112
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   113
    self logInfo:'summary:'.
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   114
    self logInfo:('%1 tests' bindWith:result runCount).
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   115
    self logInfo:('%1 passed' bindWith:result passedCount).
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   116
    self logInfo:('%1 failed' bindWith:result failureCount).
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   117
    self logInfo:('%1 errors' bindWith:result errorCount).
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   118
! !
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   119
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   120
!RunUnitTests class methodsFor:'constants'!
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   121
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   122
corruptedUnitTestClassNames
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   123
    ^ #(
336
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
   124
	#'RegressionTests::ExternalInterfaceTests'
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
   125
	#'RegressionTests::HTTPServerTests'
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
   126
	#'RegressionTests::DebuggerTest'
345
e59d3b6f2391 *** empty log message ***
sr
parents: 344
diff changeset
   127
	#'RegressionTests::ContextTest2'
329
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   128
    )
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   129
!
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   130
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   131
excludedUnitTestClassNamesForAll
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   132
    ^ #()
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   133
!
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   134
336
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
   135
excludedUnitTestClassNamesForExpecco
329
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   136
    ^ self excludedUnitTestClassNamesForAll
336
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
   137
	, #(
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
   138
	    #'RegressionTests::BreakpointTests'
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
   139
	    #'RegressionTests::SunitXMLOutputTest'
338
91098756a1cf *** empty log message ***
sr
parents: 336
diff changeset
   140
	    #'RegressionTests::CompilerTests2'
91098756a1cf *** empty log message ***
sr
parents: 336
diff changeset
   141
	    #'RegressionTests::BehaviorLookupObjectTests'
91098756a1cf *** empty log message ***
sr
parents: 336
diff changeset
   142
	    #'RegressionTests::ChangeSetTests'
91098756a1cf *** empty log message ***
sr
parents: 336
diff changeset
   143
	    #'RegressionTests::MakefileTests'
91098756a1cf *** empty log message ***
sr
parents: 336
diff changeset
   144
	    #'RegressionTests::MetaphoneStringComparatorTest'
91098756a1cf *** empty log message ***
sr
parents: 336
diff changeset
   145
	    #'RegressionTests::STCCompilerTests'
91098756a1cf *** empty log message ***
sr
parents: 336
diff changeset
   146
	    #'RegressionTests::VMCrashTests'
339
0aba6d1a9337 *** empty log message ***
sr
parents: 338
diff changeset
   147
	    #'RegressionTests::SnapshotRestartTests'
340
4e6b03506e92 *** empty log message ***
sr
parents: 339
diff changeset
   148
	    #'RegressionTests::GraphicDrawingTest'
341
4419c83530aa *** empty log message ***
sr
parents: 340
diff changeset
   149
	    #'RegressionTests::OS_OLE_Tests'
345
e59d3b6f2391 *** empty log message ***
sr
parents: 344
diff changeset
   150
		#'RegressionTests::ExternalInterfaceTests'
e59d3b6f2391 *** empty log message ***
sr
parents: 344
diff changeset
   151
		#'RegressionTests::HTTPServerTests'
e59d3b6f2391 *** empty log message ***
sr
parents: 344
diff changeset
   152
		#'RegressionTests::DebuggerTest'
e59d3b6f2391 *** empty log message ***
sr
parents: 344
diff changeset
   153
		#'RegressionTests::ContextTest2'
336
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
   154
	)
329
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   155
! !
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   156
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   157
!RunUnitTests class methodsFor:'logging'!
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   158
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   159
log:aString
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   160
    type:aType
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   161
336
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
   162
    Stdout
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
   163
	showCR:('%1 [%2] : %3'
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
   164
	    bindWith:Timestamp now printString
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
   165
	    with:(aType printString asLowercase paddedTo:'warning' size)
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
   166
	    with:aString).
329
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   167
!
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   168
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   169
logInfo:aString
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   170
    self
336
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
   171
	log:aString
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
   172
	type:'INFO'
329
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   173
!
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   174
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   175
logWarning:aString
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   176
    self
336
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
   177
	log:aString
8dcc6a1f364b *** empty log message ***
sr
parents: 335
diff changeset
   178
	type:'WARNING'
329
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   179
! !