quickSelfTest/RunUnitTests.st
author sr
Tue, 21 Mar 2017 16:03:37 +0100
changeset 329 6a3fe7cea4e1
child 335 aaa1ed543bd0
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
329
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
     1
'From Smalltalk/X, Version:7.1.0.0 on 21-03-2017 at 14:52:37'                   !
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:]
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    21
        sr
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
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    36
     cmdArgs 
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    37
     unitTestSuite 
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    38
     eachClassName eachClass
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    39
     result|
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    40
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    41
    doRunSpecificUnitTests := false.
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    42
    unitTestSuiteName := 'All Unit Tests'. 
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.
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    47
    (cmdArgs includes:'--runOnlyExpeccoUnitTests') ifTrue:[
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    48
        self logInfo:'configured to run expecco unit tests only'.
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    49
        doRunSpecificUnitTests := true.
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    50
        unitTestSuiteName := 'expecco Unit Tests'. 
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    51
        excludedUnitTestClassNames := self excludedUnitTestClassNamesForExpecco.
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    52
    ].
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    53
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    54
    doRunSpecificUnitTests ifFalse:[
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    55
        self logInfo:'configured to run all available unit tests'.
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    56
    ].
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    57
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    58
    self logInfo:'collecting unit test classes to run'.
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    59
    unitTestSuite := TestSuite named:unitTestSuiteName.
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    60
    (Smalltalk at: #'stx_goodies_regression') classNamesAndAttributes do:[:eachClassNameAndAttributes |
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    61
        eachClassNameAndAttributes isSymbol ifTrue:[
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    62
            eachClassName := eachClassNameAndAttributes.
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    63
        ] ifFalse:[
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    64
            eachClassName := eachClassNameAndAttributes 
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    65
                firstIfEmpty:nil.
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    66
        ].
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    67
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    68
        (corruptedUnitTestClassNames includes:eachClassName) ifTrue:[
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    69
            self 
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    70
                logWarning:('corrupted unit test class detected, please fix #%1' 
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    71
                    bindWith:eachClassName).
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    72
        ] ifFalse:[
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    73
            (excludedUnitTestClassNames includes:eachClassName) ifFalse:[
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    74
                eachClassName notNil ifTrue:[
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    75
                    eachClass := Smalltalk 
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    76
                        fileInClass:eachClassName 
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    77
                        package:'stx:goodies/regression'.
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    78
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    79
                    eachClass notNil ifTrue:[
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    80
                        eachClass isTestCaseLike ifTrue:[
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    81
                            unitTestSuite addTest:eachClass suite.
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    82
                        ].
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    83
                    ].
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    84
                ].
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    85
            ].
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    86
        ].
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    87
    ].
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    88
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    89
    self 
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    90
        logInfo:('%1 unit test classes collected'
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    91
            bindWith:unitTestSuite tests size).
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    92
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    93
    self logInfo:'starting unit tests'.
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    94
    result := unitTestSuite
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    95
        run:TestResultStX new
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    96
        beforeEachDo:[:test | self logInfo:'performing unit test ', test printString]
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    97
        afterEachDo:[:test| ]
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    98
        debug:(cmdArgs includes:'--debug').
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
    99
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   100
    self logInfo:'generating report'.
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   101
    TestResultReporter
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   102
        report:result
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   103
        format:#xml_jUnit
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   104
        as:'testresult.xml'.
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   105
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   106
    self logInfo:'summary:'.
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   107
    self logInfo:('%1 tests' bindWith:result runCount).
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   108
    self logInfo:('%1 passed' bindWith:result passedCount).
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   109
    self logInfo:('%1 failed' bindWith:result failureCount).
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   110
    self logInfo:('%1 errors' bindWith:result errorCount).
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   111
! !
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   112
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   113
!RunUnitTests class methodsFor:'constants'!
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   114
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   115
corruptedUnitTestClassNames
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   116
    ^ #(
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   117
        #'RegressionTests::ExternalInterfaceTests'
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   118
        #'RegressionTests::Win32OLETests'
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   119
        #'RegressionTests::HTTPServerTests'
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   120
        #'RegressionTests::SocketTests'
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   121
        #'RegressionTests::DelayTest'
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   122
        #'RegressionTests::ContextTest2'
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   123
        #'RegressionTests::DebuggerTest'
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   124
        #'RegressionTests::OperatingSystem'
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   125
    )
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   126
!
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   127
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   128
excludedUnitTestClassNamesForAll
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
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   132
excludedUnitTestClassNamesForExpecco 
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   133
    ^ self excludedUnitTestClassNamesForAll
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   134
        , #(
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   135
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   136
        )
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   137
! !
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   138
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   139
!RunUnitTests class methodsFor:'logging'!
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   140
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   141
log:aString
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   142
    type:aType
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   143
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   144
    Stdout 
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   145
        showCR:('%1 [%2] : %3'
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   146
            bindWith:Timestamp now printString
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   147
            with:(aType printString asLowercase paddedTo:'warning' size)
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   148
            with:aString).
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   149
!
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   150
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   151
logInfo:aString
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   152
    self
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   153
        log:aString
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   154
        type:'INFO'
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
logWarning:aString
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   158
    self
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   159
        log:aString
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   160
        type:'WARNING'
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   161
! !
6a3fe7cea4e1 *** empty log message ***
sr
parents:
diff changeset
   162