reports/Builder__TestReport.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 14 Nov 2016 23:43:14 +0000
branchjv
changeset 322 9ec2abb1218e
parent 318 b7f0437a6d18
child 324 3bd7d9ad8b3f
permissions -rw-r--r--
Autoscale testcase-provided timeout to compensate for slooow machines Each test case has a timeout to guard against runaway tests. However on really slow machines the timeout us not big enough. To compensate for this, asses the "speed" of machine running tests and scale default timeout if machine is slower than some (arbitrary) norm. The speed assesment is done by measuring time to run (arbitrary) benchmark code. This has the advantage to reflect actual machine load, not only hardvare spec. However, we may need to play with these magic numbers to make it working. Generally a workaround.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/builder/reports' }"
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
"{ NameSpace: Builder }"
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
Report subclass:#TestReport
303
e217bb7aacf4 Backed out 4c26321be573.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 251
diff changeset
     6
	instanceVariableNames:'suite coverage instrument keepStdout keepBytecode'
241
9879c8960574 Added option --keep-stdout to TestReport to include stdout contents in reports.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 240
diff changeset
     7
	classVariableNames:''
9879c8960574 Added option --keep-stdout to TestReport to include stdout contents in reports.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 240
diff changeset
     8
	poolDictionaries:''
9879c8960574 Added option --keep-stdout to TestReport to include stdout contents in reports.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 240
diff changeset
     9
	category:'Builder-Reports'
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
!
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
TestResult subclass:#Result
247
7387f32855da Correctly capture and report stdout.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 246
diff changeset
    13
	instanceVariableNames:'format time npassed nfailed nerror nskipped collector'
322
9ec2abb1218e Autoscale testcase-provided timeout to compensate for slooow machines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
    14
	classVariableNames:'TimeoutScale'
241
9879c8960574 Added option --keep-stdout to TestReport to include stdout contents in reports.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 240
diff changeset
    15
	poolDictionaries:''
9879c8960574 Added option --keep-stdout to TestReport to include stdout contents in reports.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 240
diff changeset
    16
	privateIn:TestReport
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
!
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
!TestReport methodsFor:'accessing'!
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
303
e217bb7aacf4 Backed out 4c26321be573.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 251
diff changeset
    22
keepBytecode
e217bb7aacf4 Backed out 4c26321be573.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 251
diff changeset
    23
    ^ keepBytecode
e217bb7aacf4 Backed out 4c26321be573.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 251
diff changeset
    24
!
e217bb7aacf4 Backed out 4c26321be573.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 251
diff changeset
    25
e217bb7aacf4 Backed out 4c26321be573.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 251
diff changeset
    26
keepBytecode:aBoolean
e217bb7aacf4 Backed out 4c26321be573.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 251
diff changeset
    27
    keepBytecode := aBoolean.
e217bb7aacf4 Backed out 4c26321be573.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 251
diff changeset
    28
!
e217bb7aacf4 Backed out 4c26321be573.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 251
diff changeset
    29
241
9879c8960574 Added option --keep-stdout to TestReport to include stdout contents in reports.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 240
diff changeset
    30
keepStdout
9879c8960574 Added option --keep-stdout to TestReport to include stdout contents in reports.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 240
diff changeset
    31
    ^ keepStdout
9879c8960574 Added option --keep-stdout to TestReport to include stdout contents in reports.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 240
diff changeset
    32
!
9879c8960574 Added option --keep-stdout to TestReport to include stdout contents in reports.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 240
diff changeset
    33
9879c8960574 Added option --keep-stdout to TestReport to include stdout contents in reports.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 240
diff changeset
    34
keepStdout:aBoolean
9879c8960574 Added option --keep-stdout to TestReport to include stdout contents in reports.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 240
diff changeset
    35
    keepStdout := aBoolean.
9879c8960574 Added option --keep-stdout to TestReport to include stdout contents in reports.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 240
diff changeset
    36
!
9879c8960574 Added option --keep-stdout to TestReport to include stdout contents in reports.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 240
diff changeset
    37
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
suite
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
    ^ suite
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
    "Created: / 07-11-2011 / 09:41:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
! !
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
!TestReport methodsFor:'accessing - defaults'!
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
defaultFileSuffix
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
    ^'Test'
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
    "Created: / 04-08-2011 / 12:56:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
!
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
defaultFormat
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
    "superclass HDReport says that I am responsible to implement this method"
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
    ^ Builder::TestReportFormat::JUnit new
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
    "Created: / 04-08-2011 / 11:54:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
!
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
defaultName
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
    ^String streamContents:[:s|
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
        suite tests do:[:suite|
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
            s nextPutAll: suite name
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
        ] separatedBy:[
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
            s nextPut:$,;space
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
        ]
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
    ]
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
    "Created: / 07-11-2011 / 09:47:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
! !
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
164
707c2a3ef492 Initial version of code coverage report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
    74
!TestReport methodsFor:'command line options'!
707c2a3ef492 Initial version of code coverage report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
    75
707c2a3ef492 Initial version of code coverage report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
    76
cmdlineOptionCoverage
707c2a3ef492 Initial version of code coverage report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
    77
707c2a3ef492 Initial version of code coverage report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
    78
    ^CmdLineOption new
707c2a3ef492 Initial version of code coverage report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
    79
        short: $c;
707c2a3ef492 Initial version of code coverage report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
    80
        long: 'coverage';
234
b48196ea5f68 Better command line help for standalone report runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 215
diff changeset
    81
        description: 'collect code coverage when running tests';
164
707c2a3ef492 Initial version of code coverage report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
    82
        action:[
707c2a3ef492 Initial version of code coverage report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
    83
            coverage := CoverageReport new.
707c2a3ef492 Initial version of code coverage report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
    84
        ]
707c2a3ef492 Initial version of code coverage report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
    85
707c2a3ef492 Initial version of code coverage report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
    86
    "Created: / 25-06-2013 / 15:36:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
234
b48196ea5f68 Better command line help for standalone report runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 215
diff changeset
    87
    "Modified: / 27-05-2014 / 16:54:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b48196ea5f68 Better command line help for standalone report runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 215
diff changeset
    88
!
b48196ea5f68 Better command line help for standalone report runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 215
diff changeset
    89
246
f0957ea6444a Builder::TestReport changed back to *keep* stdout by default. Pass --drop-stdout
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
    90
cmdlineOptionDropStdout
f0957ea6444a Builder::TestReport changed back to *keep* stdout by default. Pass --drop-stdout
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
    91
f0957ea6444a Builder::TestReport changed back to *keep* stdout by default. Pass --drop-stdout
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
    92
    ^CmdLineOption new
f0957ea6444a Builder::TestReport changed back to *keep* stdout by default. Pass --drop-stdout
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
    93
        long: 'drop-stdout';
f0957ea6444a Builder::TestReport changed back to *keep* stdout by default. Pass --drop-stdout
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
    94
        description: 'Do not include stdout in report';
f0957ea6444a Builder::TestReport changed back to *keep* stdout by default. Pass --drop-stdout
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
    95
        action:[
f0957ea6444a Builder::TestReport changed back to *keep* stdout by default. Pass --drop-stdout
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
    96
            keepStdout := false
f0957ea6444a Builder::TestReport changed back to *keep* stdout by default. Pass --drop-stdout
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
    97
        ]
f0957ea6444a Builder::TestReport changed back to *keep* stdout by default. Pass --drop-stdout
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
    98
f0957ea6444a Builder::TestReport changed back to *keep* stdout by default. Pass --drop-stdout
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
    99
    "Created: / 08-08-2014 / 11:48:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f0957ea6444a Builder::TestReport changed back to *keep* stdout by default. Pass --drop-stdout
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
   100
!
f0957ea6444a Builder::TestReport changed back to *keep* stdout by default. Pass --drop-stdout
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
   101
234
b48196ea5f68 Better command line help for standalone report runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 215
diff changeset
   102
cmdlineOptionInstrument
b48196ea5f68 Better command line help for standalone report runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 215
diff changeset
   103
b48196ea5f68 Better command line help for standalone report runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 215
diff changeset
   104
    ^CmdLineOption new
b48196ea5f68 Better command line help for standalone report runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 215
diff changeset
   105
        short: $I;
b48196ea5f68 Better command line help for standalone report runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 215
diff changeset
   106
        long: 'instrument';
b48196ea5f68 Better command line help for standalone report runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 215
diff changeset
   107
        description: 'extra package to instrument for coverage (implies --coverage)';
b48196ea5f68 Better command line help for standalone report runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 215
diff changeset
   108
        action:[:package |
b48196ea5f68 Better command line help for standalone report runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 215
diff changeset
   109
            instrument isNil ifTrue:[ 
b48196ea5f68 Better command line help for standalone report runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 215
diff changeset
   110
                instrument := Set new.
b48196ea5f68 Better command line help for standalone report runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 215
diff changeset
   111
            ].
b48196ea5f68 Better command line help for standalone report runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 215
diff changeset
   112
            instrument add: package.
b48196ea5f68 Better command line help for standalone report runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 215
diff changeset
   113
            coverage isNil ifTrue:[ 
b48196ea5f68 Better command line help for standalone report runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 215
diff changeset
   114
                coverage := CoverageReport new.
b48196ea5f68 Better command line help for standalone report runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 215
diff changeset
   115
            ].
b48196ea5f68 Better command line help for standalone report runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 215
diff changeset
   116
b48196ea5f68 Better command line help for standalone report runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 215
diff changeset
   117
        ]
b48196ea5f68 Better command line help for standalone report runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 215
diff changeset
   118
b48196ea5f68 Better command line help for standalone report runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 215
diff changeset
   119
    "Created: / 27-05-2014 / 16:34:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
241
9879c8960574 Added option --keep-stdout to TestReport to include stdout contents in reports.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 240
diff changeset
   120
!
9879c8960574 Added option --keep-stdout to TestReport to include stdout contents in reports.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 240
diff changeset
   121
303
e217bb7aacf4 Backed out 4c26321be573.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 251
diff changeset
   122
cmdlineOptionKeepBytecode
e217bb7aacf4 Backed out 4c26321be573.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 251
diff changeset
   123
e217bb7aacf4 Backed out 4c26321be573.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 251
diff changeset
   124
    ^CmdLineOption new
e217bb7aacf4 Backed out 4c26321be573.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 251
diff changeset
   125
        long: 'keep-bytecode';
e217bb7aacf4 Backed out 4c26321be573.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 251
diff changeset
   126
        description: 'Keep and include method''s bytecode in reported stacktraces. May generate huge report!!';
e217bb7aacf4 Backed out 4c26321be573.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 251
diff changeset
   127
        action:[
e217bb7aacf4 Backed out 4c26321be573.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 251
diff changeset
   128
            keepBytecode := true
e217bb7aacf4 Backed out 4c26321be573.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 251
diff changeset
   129
        ]
e217bb7aacf4 Backed out 4c26321be573.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 251
diff changeset
   130
e217bb7aacf4 Backed out 4c26321be573.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 251
diff changeset
   131
    "Created: / 15-03-2016 / 14:32:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
e217bb7aacf4 Backed out 4c26321be573.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 251
diff changeset
   132
!
e217bb7aacf4 Backed out 4c26321be573.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 251
diff changeset
   133
241
9879c8960574 Added option --keep-stdout to TestReport to include stdout contents in reports.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 240
diff changeset
   134
cmdlineOptionKeepStdout
9879c8960574 Added option --keep-stdout to TestReport to include stdout contents in reports.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 240
diff changeset
   135
9879c8960574 Added option --keep-stdout to TestReport to include stdout contents in reports.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 240
diff changeset
   136
    ^CmdLineOption new
9879c8960574 Added option --keep-stdout to TestReport to include stdout contents in reports.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 240
diff changeset
   137
        long: 'keep-stdout';
9879c8960574 Added option --keep-stdout to TestReport to include stdout contents in reports.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 240
diff changeset
   138
        description: 'Keep stdout and include it in report (may generate huge report!!)';
9879c8960574 Added option --keep-stdout to TestReport to include stdout contents in reports.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 240
diff changeset
   139
        action:[
9879c8960574 Added option --keep-stdout to TestReport to include stdout contents in reports.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 240
diff changeset
   140
            keepStdout := true
9879c8960574 Added option --keep-stdout to TestReport to include stdout contents in reports.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 240
diff changeset
   141
        ]
9879c8960574 Added option --keep-stdout to TestReport to include stdout contents in reports.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 240
diff changeset
   142
9879c8960574 Added option --keep-stdout to TestReport to include stdout contents in reports.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 240
diff changeset
   143
    "Created: / 16-06-2014 / 10:42:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
164
707c2a3ef492 Initial version of code coverage report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   144
! !
707c2a3ef492 Initial version of code coverage report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   145
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
!TestReport methodsFor:'initialization'!
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
initialize
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
    suite := TestSuite new.
164
707c2a3ef492 Initial version of code coverage report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   151
    coverage := nil.
246
f0957ea6444a Builder::TestReport changed back to *keep* stdout by default. Pass --drop-stdout
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
   152
    keepStdout := true.
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
246
f0957ea6444a Builder::TestReport changed back to *keep* stdout by default. Pass --drop-stdout
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 241
diff changeset
   154
    "Modified: / 08-08-2014 / 11:45:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
!
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
setupForClasses:classes
90
995880ed753c comment/format in: #setupForClasses:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   158
    "Setup the report to run given classes"
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
90
995880ed753c comment/format in: #setupForClasses:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   160
    | suiteFromClasses |
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
90
995880ed753c comment/format in: #setupForClasses:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   162
    suiteFromClasses := TestSuite named:name.
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   163
    classes do:
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
            [:cls | 
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
            |tc|
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
            cls isTestCaseLike 
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
                ifTrue:
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
                    [ tc := cls asTestCase.
90
995880ed753c comment/format in: #setupForClasses:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   170
                    tc isAbstract ifFalse:[ suiteFromClasses addTest:tc suite ] ] ].
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   171
90
995880ed753c comment/format in: #setupForClasses:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   172
    self setupForSuite: suiteFromClasses.
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   173
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
    "Created: / 04-08-2011 / 14:34:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
!
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   176
164
707c2a3ef492 Initial version of code coverage report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   177
setupForPackages:pkgs 
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   178
164
707c2a3ef492 Initial version of code coverage report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   179
    pkgs do: [:pkg | 
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   180
        |def |
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   181
80
eb88d790573d Loads the package if not already loaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   182
        self loadPackageIfNotAlready: pkg.
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   183
        def := ProjectDefinition definitionClassForPackage:pkg.
80
eb88d790573d Loads the package if not already loaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   184
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   185
        (def respondsTo:#testSuite) ifTrue:[ 
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   186
            suite addTest:def testSuite 
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   187
        ] ifFalse:[ 
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   188
            | classes psuite |
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   189
            psuite := TestSuite named:pkg.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   190
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   191
            classes := def notNil 
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   192
                        ifTrue:[ def classes ]
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   193
                        ifFalse:[ ProjectDefinition searchForClassesWithProject:pkg asSymbol ].
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   194
            classes do: [:cls | 
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   195
                |tc|
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   196
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   197
                cls isTestCaseLike ifTrue: [ 
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   198
                    tc := cls asTestCase.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   199
                    tc isAbstract ifFalse:[ 
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   200
                        psuite addTest:tc suite
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   201
                    ]
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   202
                ]
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   203
            ].
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   204
            suite addTest: psuite.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   205
        ]
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   206
    ].
164
707c2a3ef492 Initial version of code coverage report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   207
    coverage notNil ifTrue:[
707c2a3ef492 Initial version of code coverage report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   208
        coverage setupForPackages: packages.
234
b48196ea5f68 Better command line help for standalone report runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 215
diff changeset
   209
        instrument notNil ifTrue:[ 
b48196ea5f68 Better command line help for standalone report runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 215
diff changeset
   210
            coverage setupForPackages: instrument.
b48196ea5f68 Better command line help for standalone report runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 215
diff changeset
   211
        ].
164
707c2a3ef492 Initial version of code coverage report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   212
    ]
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   213
234
b48196ea5f68 Better command line help for standalone report runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 215
diff changeset
   214
    "Modified: / 27-05-2014 / 16:35:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   215
!
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   216
90
995880ed753c comment/format in: #setupForClasses:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   217
setupForSuite: suiteToAdd
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   218
90
995880ed753c comment/format in: #setupForClasses:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   219
    suite addTest: suiteToAdd.
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   220
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   221
    "Created: / 06-11-2011 / 18:27:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   222
! !
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   223
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   224
!TestReport methodsFor:'private'!
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   225
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   226
print: anObject on: aStream
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   227
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   228
    [ anObject printOn: aStream ]
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   229
        on: Error do:
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   230
            [aStream 
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   231
                nextPutAll: '** error when prining instance of ';
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   232
                nextPutAll: anObject class name;
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   233
                nextPutAll: '**']
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   234
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   235
    "Created: / 15-03-2011 / 22:09:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   236
! !
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   237
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   238
!TestReport methodsFor:'running'!
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   239
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   240
runReport
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   241
164
707c2a3ef492 Initial version of code coverage report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   242
    | result |
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   243
    result := Result new format:format.
164
707c2a3ef492 Initial version of code coverage report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   244
    coverage notNil ifTrue:[
707c2a3ef492 Initial version of code coverage report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   245
        InstrumentationContext  run:[
707c2a3ef492 Initial version of code coverage report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   246
            suite run:result.
707c2a3ef492 Initial version of code coverage report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   247
        ].
707c2a3ef492 Initial version of code coverage report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   248
        Transcript cr; cr.
707c2a3ef492 Initial version of code coverage report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   249
        Transcript show: 'COLLECTING COVERAGE...'.
707c2a3ef492 Initial version of code coverage report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   250
        coverage name: self name.
318
b7f0437a6d18 Pass ident string to coverage report when tests are run with `-c` option
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 303
diff changeset
   251
        coverage ident: self ident.
164
707c2a3ef492 Initial version of code coverage report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   252
        coverage run.
707c2a3ef492 Initial version of code coverage report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   253
    ] ifFalse:[
707c2a3ef492 Initial version of code coverage report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   254
        suite run:result.
707c2a3ef492 Initial version of code coverage report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   255
    ].
111
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   256
    Transcript cr; cr.
215
b6e13772ac08 class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 189
diff changeset
   257
b6e13772ac08 class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 189
diff changeset
   258
    result failureOutcomes do:[:failureOutcome |
b6e13772ac08 class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 189
diff changeset
   259
        Transcript show: 'FAILED '.
b6e13772ac08 class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 189
diff changeset
   260
        failureOutcome testCase printOn: Transcript.
b6e13772ac08 class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 189
diff changeset
   261
        Transcript cr.
b6e13772ac08 class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 189
diff changeset
   262
    ].
b6e13772ac08 class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 189
diff changeset
   263
    result errorOutcomes do:[:errorOutcome |
b6e13772ac08 class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 189
diff changeset
   264
        Transcript show: 'ERROR  '.
b6e13772ac08 class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 189
diff changeset
   265
        errorOutcome testCase printOn: Transcript.
b6e13772ac08 class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 189
diff changeset
   266
        Transcript cr.
b6e13772ac08 class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 189
diff changeset
   267
    ].
b6e13772ac08 class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 189
diff changeset
   268
    Transcript cr; cr.
111
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   269
    Transcript show: 'SUMMARY: '.
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   270
    result printOn: Transcript.
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   271
    Transcript cr.
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   272
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   273
    "Created: / 04-08-2011 / 12:39:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
318
b7f0437a6d18 Pass ident string to coverage report when tests are run with `-c` option
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 303
diff changeset
   274
    "Modified: / 28-05-2016 / 10:33:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   275
! !
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   276
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   277
!TestReport::Result methodsFor:'accessing'!
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   278
111
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   279
errorCount
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   280
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   281
    ^nerror
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   282
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   283
    "Created: / 31-01-2013 / 13:54:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   284
!
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   285
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   286
exceptions
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   287
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   288
    ^super exceptions , HaltInterrupt
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   289
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   290
    "Created: / 03-08-2011 / 14:59:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   291
!
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   292
111
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   293
failureCount
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   294
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   295
    ^nfailed
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   296
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   297
    "Created: / 31-01-2013 / 13:53:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   298
!
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   299
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   300
format
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   301
    ^ format
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   302
!
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   303
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   304
format:aFormat
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   305
    format := aFormat.
111
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   306
!
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   307
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   308
passedCount
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   309
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   310
    ^npassed
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   311
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   312
    "Created: / 31-01-2013 / 13:54:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   313
!
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   314
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   315
skippedCount
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   316
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   317
    ^nskipped
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   318
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   319
    "Created: / 31-01-2013 / 13:54:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   320
! !
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   321
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   322
!TestReport::Result methodsFor:'adding'!
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   323
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   324
addError: testcase detail: exception
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   325
236
475480551293 When running SUnit tests, capture and log stdout, stderr and Transcript and include it in XML report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 234
diff changeset
   326
    outcome result: (TestResult stateError).
247
7387f32855da Correctly capture and report stdout.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 246
diff changeset
   327
    outcome collectedOutput: collector contents. 
236
475480551293 When running SUnit tests, capture and log stdout, stderr and Transcript and include it in XML report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 234
diff changeset
   328
    format writeTestCase: testcase outcome: outcome time: time exception: exception.
239
517a62e9f9ab Display one-char messages to make output shorter.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 237
diff changeset
   329
    Transcript show:'...ERROR'.
250
4392c84aaf1c Log start and end of individual tests.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
   330
    Logger trace: 'Finised %1>>%2, result ERROR' with: testcase nameForHDTestReport with: testcase selectorForHDTestReport.
215
b6e13772ac08 class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 189
diff changeset
   331
    self errorOutcomes add:outcome.      
111
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   332
    nerror := nerror + 1.
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   333
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   334
    "Created: / 03-08-2011 / 15:00:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
250
4392c84aaf1c Log start and end of individual tests.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
   335
    "Modified: / 29-10-2014 / 14:02:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   336
!
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   337
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   338
addFailure: testcase detail: exception
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   339
236
475480551293 When running SUnit tests, capture and log stdout, stderr and Transcript and include it in XML report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 234
diff changeset
   340
    outcome result: (TestResult stateFail).
247
7387f32855da Correctly capture and report stdout.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 246
diff changeset
   341
    outcome collectedOutput: collector contents. 
236
475480551293 When running SUnit tests, capture and log stdout, stderr and Transcript and include it in XML report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 234
diff changeset
   342
    format writeTestCase: testcase outcome: outcome time: time exception: exception.
239
517a62e9f9ab Display one-char messages to make output shorter.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 237
diff changeset
   343
    Transcript show:'...FAILED'.
250
4392c84aaf1c Log start and end of individual tests.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
   344
    Logger trace: 'Finised %1>>%2, result FAILED' with: testcase nameForHDTestReport with: testcase selectorForHDTestReport.
215
b6e13772ac08 class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 189
diff changeset
   345
    self failureOutcomes add: outcome.
111
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   346
    nfailed := nfailed + 1.
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   347
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   348
    "Created: / 03-08-2011 / 15:00:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
250
4392c84aaf1c Log start and end of individual tests.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
   349
    "Modified: / 29-10-2014 / 14:01:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   350
!
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   351
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   352
addPass: testcase
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   353
236
475480551293 When running SUnit tests, capture and log stdout, stderr and Transcript and include it in XML report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 234
diff changeset
   354
    outcome result: TestResult statePass.
475480551293 When running SUnit tests, capture and log stdout, stderr and Transcript and include it in XML report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 234
diff changeset
   355
    format writeTestCase: testcase outcome: outcome time: time exception: nil.
239
517a62e9f9ab Display one-char messages to make output shorter.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 237
diff changeset
   356
    Transcript show:'...OK'.
250
4392c84aaf1c Log start and end of individual tests.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
   357
    Logger trace: 'Finised %1>>%2, result PASSED' with: testcase nameForHDTestReport with: testcase selectorForHDTestReport.
111
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   358
    npassed := npassed + 1.
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   359
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   360
    "Created: / 03-08-2011 / 15:19:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
250
4392c84aaf1c Log start and end of individual tests.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
   361
    "Modified: / 29-10-2014 / 14:01:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
105
15beda6b5f6e Added support for skipped/ignored tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
   362
!
15beda6b5f6e Added support for skipped/ignored tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
   363
15beda6b5f6e Added support for skipped/ignored tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
   364
addSkipped: testcase
15beda6b5f6e Added support for skipped/ignored tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
   365
240
d10369beab55 Oops, fix for skipped tests.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   366
    outcome := self createOutcome.
d10369beab55 Oops, fix for skipped tests.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 239
diff changeset
   367
    outcome testCase: testcase.        
236
475480551293 When running SUnit tests, capture and log stdout, stderr and Transcript and include it in XML report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 234
diff changeset
   368
    outcome result: TestResult stateSkip.
475480551293 When running SUnit tests, capture and log stdout, stderr and Transcript and include it in XML report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 234
diff changeset
   369
    format writeTestCase: testcase outcome: outcome time: time exception: nil.
239
517a62e9f9ab Display one-char messages to make output shorter.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 237
diff changeset
   370
    Transcript show:'...SKIPPED'.
250
4392c84aaf1c Log start and end of individual tests.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
   371
    Logger trace: 'Finised %1>>%2, result SKIPPED' with: testcase nameForHDTestReport with: testcase selectorForHDTestReport.
111
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   372
    nskipped := nskipped + 1.
105
15beda6b5f6e Added support for skipped/ignored tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
   373
15beda6b5f6e Added support for skipped/ignored tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
   374
    "Created: / 21-11-2012 / 15:35:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
250
4392c84aaf1c Log start and end of individual tests.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
   375
    "Modified: / 29-10-2014 / 14:01:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
111
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   376
! !
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   377
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   378
!TestReport::Result methodsFor:'initialization'!
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   379
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   380
initialize
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   381
    super initialize.
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   382
322
9ec2abb1218e Autoscale testcase-provided timeout to compensate for slooow machines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
   383
    npassed := nfailed := nerror := nskipped := 0.
9ec2abb1218e Autoscale testcase-provided timeout to compensate for slooow machines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
   384
    TimeoutScale isNil ifTrue:[ 
9ec2abb1218e Autoscale testcase-provided timeout to compensate for slooow machines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
   385
        | bench |
9ec2abb1218e Autoscale testcase-provided timeout to compensate for slooow machines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
   386
9ec2abb1218e Autoscale testcase-provided timeout to compensate for slooow machines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
   387
        bench := Time millisecondsToRun:[3000 timesRepeat: [ 2000 factorial ]].
9ec2abb1218e Autoscale testcase-provided timeout to compensate for slooow machines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
   388
        TimeoutScale := (bench / 2500"mean value of an i5 32bit") max: 1.
9ec2abb1218e Autoscale testcase-provided timeout to compensate for slooow machines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
   389
    ].
111
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   390
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   391
    "Created: / 31-01-2013 / 13:52:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
322
9ec2abb1218e Autoscale testcase-provided timeout to compensate for slooow machines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
   392
    "Modified: / 14-11-2016 / 23:37:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   393
! !
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   394
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   395
!TestReport::Result methodsFor:'running'!
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   396
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   397
performCase:aTestCase 
251
cb6ebbd8d1c0 Fixed setup of a SplittingStream when running tests - wrap Stdout / Stderr to an EncodedStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 250
diff changeset
   398
    | savedStdout savedStderr savedTranscript encoder |
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   399
236
475480551293 When running SUnit tests, capture and log stdout, stderr and Transcript and include it in XML report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 234
diff changeset
   400
    savedStdout := Stdout.
475480551293 When running SUnit tests, capture and log stdout, stderr and Transcript and include it in XML report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 234
diff changeset
   401
    savedStderr := Stdout.
475480551293 When running SUnit tests, capture and log stdout, stderr and Transcript and include it in XML report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 234
diff changeset
   402
    savedTranscript := Transcript.
251
cb6ebbd8d1c0 Fixed setup of a SplittingStream when running tests - wrap Stdout / Stderr to an EncodedStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 250
diff changeset
   403
    encoder := OperatingSystem isMSWINDOWSlike 
cb6ebbd8d1c0 Fixed setup of a SplittingStream when running tests - wrap Stdout / Stderr to an EncodedStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 250
diff changeset
   404
                ifTrue:[ CharacterEncoder encoderForUTF8 ]
cb6ebbd8d1c0 Fixed setup of a SplittingStream when running tests - wrap Stdout / Stderr to an EncodedStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 250
diff changeset
   405
                ifFalse:[ CharacterEncoder encoderFor: OperatingSystem getCodeset ].
236
475480551293 When running SUnit tests, capture and log stdout, stderr and Transcript and include it in XML report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 234
diff changeset
   406
    collector := WriteStream on:(String new:100).
475480551293 When running SUnit tests, capture and log stdout, stderr and Transcript and include it in XML report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 234
diff changeset
   407
    [
251
cb6ebbd8d1c0 Fixed setup of a SplittingStream when running tests - wrap Stdout / Stderr to an EncodedStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 250
diff changeset
   408
        Stdout := SplittingWriteStream on:collector and: (EncodedStream stream: Stdout encoder: encoder).
cb6ebbd8d1c0 Fixed setup of a SplittingStream when running tests - wrap Stdout / Stderr to an EncodedStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 250
diff changeset
   409
        Stderr := SplittingWriteStream on:collector and: (EncodedStream stream: Stderr encoder: encoder).
236
475480551293 When running SUnit tests, capture and log stdout, stderr and Transcript and include it in XML report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 234
diff changeset
   410
        Transcript := SplittingWriteStream on:collector and: Transcript.
475480551293 When running SUnit tests, capture and log stdout, stderr and Transcript and include it in XML report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 234
diff changeset
   411
        time := Time millisecondsToRun: [ super performCase: aTestCase ]
475480551293 When running SUnit tests, capture and log stdout, stderr and Transcript and include it in XML report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 234
diff changeset
   412
    ] ensure:[
475480551293 When running SUnit tests, capture and log stdout, stderr and Transcript and include it in XML report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 234
diff changeset
   413
        Stdout := savedStdout.
475480551293 When running SUnit tests, capture and log stdout, stderr and Transcript and include it in XML report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 234
diff changeset
   414
        Stderr := savedStderr.
475480551293 When running SUnit tests, capture and log stdout, stderr and Transcript and include it in XML report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 234
diff changeset
   415
        Transcript := savedTranscript.
247
7387f32855da Correctly capture and report stdout.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 246
diff changeset
   416
        outcome collectedOutput: nil. "/ flush it, it has been written to output already
7387f32855da Correctly capture and report stdout.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 246
diff changeset
   417
        collector := nil.
236
475480551293 When running SUnit tests, capture and log stdout, stderr and Transcript and include it in XML report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 234
diff changeset
   418
    ].
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   419
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   420
    "Created: / 03-08-2011 / 18:40:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
251
cb6ebbd8d1c0 Fixed setup of a SplittingStream when running tests - wrap Stdout / Stderr to an EncodedStream
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 250
diff changeset
   421
    "Modified: / 07-12-2014 / 01:12:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   422
!
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   423
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   424
runCase:aTestCase debugged: debugged 
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   425
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   426
    | timeout |
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   427
    timeout := aTestCase timeout.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   428
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   429
    self runCase: aTestCase debugged: debugged 
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   430
         fork:  (aTestCase shouldFork or:[timeout notNil])
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   431
         timeout: timeout ? 60"sec"
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   432
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   433
    "Created: / 22-08-2011 / 14:37:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   434
!
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   435
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   436
runCase:aTestCase debugged: debugged fork:doFork
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   437
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   438
    ^self runCase:aTestCase debugged: debugged 
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   439
          fork:doFork timeout: aTestCase timeout ? 60"sec"
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   440
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   441
    "Created: / 22-08-2011 / 14:38:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   442
!
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   443
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   444
runCase:aTestCase debugged: debugged fork:doFork timeout: tout
109
7a93688e5642 Make use of TestCase>>shouldSkip
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 105
diff changeset
   445
    | nm sel |
105
15beda6b5f6e Added support for skipped/ignored tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
   446
189
bd2bed33aba7 Fixes to make it running on Smalltalk/X 6.2.2 released in July 2012
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 164
diff changeset
   447
    (aTestCase perform: #shouldSkip ifNotUnderstood:[false]) ifTrue:[
105
15beda6b5f6e Added support for skipped/ignored tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
   448
        self addSkipped: aTestCase.
15beda6b5f6e Added support for skipped/ignored tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
   449
        ^self.
15beda6b5f6e Added support for skipped/ignored tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
   450
    ].
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   451
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   452
    nm := aTestCase nameForHDTestReport.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   453
    nm size > 20 ifTrue:[
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   454
        nm := (nm copyTo: 17) , '...'
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   455
    ].
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   456
    sel := aTestCase selectorForHDTestReport.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   457
    sel size > 20 ifTrue:[
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   458
        sel := '...' , (sel copyFrom: sel size - 16 to: sel size)
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   459
    ].
234
b48196ea5f68 Better command line help for standalone report runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 215
diff changeset
   460
    Transcript showCR:('%1 >> #%2' bindWith: aTestCase nameForHDTestReport with: aTestCase selectorForHDTestReport).
250
4392c84aaf1c Log start and end of individual tests.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
   461
    Transcript show:('%-20s >> %-20s : ' printfWith: nm with: sel).
234
b48196ea5f68 Better command line help for standalone report runner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 215
diff changeset
   462
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   463
    outcome := self createOutcome.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   464
    outcome testCase: aTestCase.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   465
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   466
    doFork ifFalse:[ 
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   467
        super runCase:aTestCase debugged: debugged.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   468
        Transcript cr.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   469
        ^self.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   470
    ].
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   471
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   472
    OperatingSystem isUNIXlike ifTrue:[
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   473
"/        self unixForkCase: aTestCase debugged: debugged.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   474
"/      Use lightweight forking
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   475
        self lightForkCase: aTestCase debugged: debugged timeout: tout.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   476
        ^ self.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   477
    ].
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   478
    OperatingSystem isMSWINDOWSlike ifTrue:[
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   479
        self lightForkCase: aTestCase debugged: debugged timeout: tout.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   480
        ^ self.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   481
    ].
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   482
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   483
    self error:'Unssuported platform'
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   484
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   485
    "Created: / 12-01-2012 / 17:52:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
250
4392c84aaf1c Log start and end of individual tests.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
   486
    "Modified: / 29-10-2014 / 13:57:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   487
! !
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   488
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   489
!TestReport::Result methodsFor:'running-private'!
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   490
322
9ec2abb1218e Autoscale testcase-provided timeout to compensate for slooow machines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
   491
lightForkCase:aTestCase debugged: debugged timeout: timeoutBase
9ec2abb1218e Autoscale testcase-provided timeout to compensate for slooow machines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
   492
    | timeout thread sema stime etime timeouted error stack log logPos |
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   493
250
4392c84aaf1c Log start and end of individual tests.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
   494
    Logger trace: 'Running %1>>%2' with: aTestCase nameForHDTestReport with: aTestCase selectorForHDTestReport.
239
517a62e9f9ab Display one-char messages to make output shorter.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 237
diff changeset
   495
    Transcript show:'F'.
322
9ec2abb1218e Autoscale testcase-provided timeout to compensate for slooow machines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
   496
    timeout := (timeoutBase * TimeoutScale) rounded. 
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   497
    sema := Semaphore new.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   498
    stime := OperatingSystem getMillisecondTime.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   499
    log := false.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   500
    logPos := format stream stream position.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   501
    timeouted := false.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   502
    thread := [ super runCase:aTestCase debugged: debugged ] newProcess.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   503
    thread addExitAction:[sema signal].
237
8229efa1f621 Dump all threads when testcase times out.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 236
diff changeset
   504
    thread name: ('Testcase execution thread (%1)' bindWith: aTestCase).
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   505
    thread resume.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   506
239
517a62e9f9ab Display one-char messages to make output shorter.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 237
diff changeset
   507
    Transcript show: 'W'.
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   508
    (sema waitWithTimeout:timeout) isNil ifTrue: [
239
517a62e9f9ab Display one-char messages to make output shorter.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 237
diff changeset
   509
        Transcript show: 'T'.
237
8229efa1f621 Dump all threads when testcase times out.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 236
diff changeset
   510
        stack := String streamContents:[:s |  ReportRunner dumpProcessesOn:s ].
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   511
        thread terminate.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   512
        timeouted := true.
239
517a62e9f9ab Display one-char messages to make output shorter.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 237
diff changeset
   513
        Transcript show: 'K'.
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   514
    ].
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   515
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   516
    etime := OperatingSystem getMillisecondTime.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   517
    timeouted ifTrue:[
322
9ec2abb1218e Autoscale testcase-provided timeout to compensate for slooow machines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
   518
        error := TimeoutError new messageText: ('Timed out (effective %1ms, base %2ms, scale %3)' bindWith: timeout with: timeoutBase with:TimeoutScale) .
236
475480551293 When running SUnit tests, capture and log stdout, stderr and Transcript and include it in XML report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 234
diff changeset
   519
        outcome result: TestResult stateError.
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   520
        format 
236
475480551293 When running SUnit tests, capture and log stdout, stderr and Transcript and include it in XML report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 234
diff changeset
   521
            writeTestCase: aTestCase outcome: outcome 
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   522
                     time: etime - stime
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   523
                exception: error
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   524
               stacktrace: stack.
250
4392c84aaf1c Log start and end of individual tests.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
   525
         Transcript show:'...ERROR'.
4392c84aaf1c Log start and end of individual tests.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
   526
         Logger trace: 'Finised %1>>%2, result ERROR (timeout)' with: aTestCase nameForHDTestReport with: aTestCase selectorForHDTestReport.
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   527
    ].
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   528
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   529
    outcome := nil.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   530
    Transcript cr.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   531
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   532
    "Created: / 12-01-2012 / 17:42:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
322
9ec2abb1218e Autoscale testcase-provided timeout to compensate for slooow machines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
   533
    "Modified: / 16-11-2016 / 23:26:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   534
!
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   535
322
9ec2abb1218e Autoscale testcase-provided timeout to compensate for slooow machines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
   536
unixForkCase:aTestCase debugged: debugged timeout: timeoutBase
9ec2abb1218e Autoscale testcase-provided timeout to compensate for slooow machines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
   537
    | timeout pid status sema stime etime error stack suiteFailuresBefore suiteErrorsBefore log logPos |
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   538
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   539
    Transcript show:'forking...'.
322
9ec2abb1218e Autoscale testcase-provided timeout to compensate for slooow machines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
   540
    timeout := (timeoutBase * TimeoutScale) rounded.   
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   541
    sema := Semaphore new.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   542
    stime := OperatingSystem getMillisecondTime.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   543
    log := false.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   544
    logPos := format stream stream position.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   545
    Processor monitor:
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   546
            [ pid := OperatingSystem fork.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   547
            pid == 0 ifTrue:[ nil ] ifFalse:[ pid ] ]
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   548
        action:
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   549
            [:s | 
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   550
            Transcript show:'child finished...'.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   551
            status := s.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   552
            sema signal ].
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   553
    pid == 0 
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   554
        ifTrue:
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   555
            [ "Child, exit codes:
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   556
             0...PASSED
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   557
             1...FAILED
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   558
             2...ERROR
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   559
           >64...got signal <code>-64"
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   560
            
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   561
            [ suiteFailuresBefore := failures.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   562
            suiteErrorsBefore := errors.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   563
            super runCase:aTestCase debugged: debugged.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   564
            suiteErrorsBefore ~~ errors ifTrue:[ Smalltalk exit:2 ].
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   565
            suiteFailuresBefore ~~ failures ifTrue:[ Smalltalk exit:1 ].
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   566
            format streamClose.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   567
            Smalltalk exit:0. ] on:OSSignalInterrupt
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   568
                    do:[:ex | format streamClose. Smalltalk exit:64 + ex parameter ] ]
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   569
        ifFalse:
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   570
            [ "Parent"
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   571
            format streamClose.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   572
            Transcript show: 'waiting for child...'.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   573
            (sema waitWithTimeout:timeout) isNil 
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   574
                ifTrue:
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   575
                    [Transcript show: 'timeout...'.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   576
                    OperatingSystem terminateProcess:pid.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   577
                    OperatingSystem childProcessWait:true pid:pid.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   578
                    Transcript show: 'killed...'.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   579
                    ].
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   580
            etime := OperatingSystem getMillisecondTime.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   581
            (status isNil or:[ status success not ]) 
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   582
                ifFalse:[
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   583
                    "/child finished, result is pass. However, it is not in my passed collection
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   584
                    "/since addPass: has been called in child process
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   585
                   super addPass: aTestCase.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   586
                ] ifTrue:
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   587
                    [ log := true.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   588
                    status isNil 
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   589
                        ifTrue:
322
9ec2abb1218e Autoscale testcase-provided timeout to compensate for slooow machines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
   590
                            [ error := TimeoutError new messageText: ('Timed out (effective %1ms, base %2ms, scale %3)' bindWith: timeout with: timeoutBase with:TimeoutScale) .
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   591
                            stack := 'Oops, timed out!! (timeout was ' , timeout printString , ' sec)'. ]
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   592
                        ifFalse:
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   593
                            [ status status == #signal 
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   594
                                ifTrue:
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   595
                                    [ error := OSSignalInterrupt new parameter:status code.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   596
                                    stack := 'Oops, VM terminated on signal ' , status code printString, ' (stactrace not awailable)' ].
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   597
                            status status == #exit 
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   598
                                ifTrue:
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   599
                                    [ status code == 1 
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   600
                                        ifTrue:
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   601
                                            [super addFailure: aTestCase detail: nil.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   602
                                            log := false ].
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   603
                                    status code == 2 
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   604
                                        ifTrue:
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   605
                                            [super addError: aTestCase detail: nil.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   606
                                            log := false ].
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   607
                                    status code > 64 
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   608
                                        ifTrue:
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   609
                                            [ error := OSSignalInterrupt new parameter:status code - 64.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   610
                                            stack := 'Oops, VM terminated on signal ' , status code p ] ] ]. ].
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   611
            format streamOpenForAppend.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   612
            log ifTrue:[
236
475480551293 When running SUnit tests, capture and log stdout, stderr and Transcript and include it in XML report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 234
diff changeset
   613
                     outcome result: TestResult stateError.
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   614
                     format stream stream position: logPos.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   615
                     format 
236
475480551293 When running SUnit tests, capture and log stdout, stderr and Transcript and include it in XML report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 234
diff changeset
   616
                        writeTestCase: aTestCase outcome: outcome 
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   617
                                 time: etime - stime
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   618
                            exception: error
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   619
                           stacktrace: stack.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   620
                     Transcript show:'ERROR'
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   621
            ]
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   622
    ].
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   623
    outcome := nil.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   624
    Transcript cr.
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   625
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   626
    "Created: / 12-01-2012 / 17:43:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
322
9ec2abb1218e Autoscale testcase-provided timeout to compensate for slooow machines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
   627
    "Modified: / 16-11-2016 / 23:26:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   628
! !
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   629
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   630
!TestReport class methodsFor:'documentation'!
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   631
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   632
version
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   633
    ^ '$Header$'
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   634
!
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   635
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   636
version_CVS
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   637
    ^ '$Header$'
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   638
!
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   639
318
b7f0437a6d18 Pass ident string to coverage report when tests are run with `-c` option
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 303
diff changeset
   640
version_HG
b7f0437a6d18 Pass ident string to coverage report when tests are run with `-c` option
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 303
diff changeset
   641
b7f0437a6d18 Pass ident string to coverage report when tests are run with `-c` option
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 303
diff changeset
   642
    ^ '$Changeset: <not expanded> $'
b7f0437a6d18 Pass ident string to coverage report when tests are run with `-c` option
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 303
diff changeset
   643
!
b7f0437a6d18 Pass ident string to coverage report when tests are run with `-c` option
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 303
diff changeset
   644
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   645
version_SVN
164
707c2a3ef492 Initial version of code coverage report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   646
    ^ '$Id$'
74
d67d39f7b54e initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   647
! !
111
d0fa0756222b class: Builder::TestReport
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   648