TestResultReporter.st
author Claus Gittinger <cg@exept.de>
Sat, 30 Jul 2011 10:32:26 +0200
changeset 268 02c41854a7b8
parent 267 7d2e67524850
child 272 492c13b42f3b
permissions -rw-r--r--
added tap (perl unit test) output format
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/sunit' }"
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
Object subclass:#TestResultReporter
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:'result stream'
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	category:'SUnit-Report'
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
267
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    10
!TestResultReporter class methodsFor:'documentation'!
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    11
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    12
documentation
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    13
"
268
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
    14
    Currently supported formats are:
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
    15
        #xml    - a junit-like format
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
    16
        #tap    - perl TAP unit test format; very naive and simple,
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
    17
                  but there are tools for it...
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
    18
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
    19
    public API entry:
267
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    20
        |aTestResult|
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    21
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    22
        aTestResult := aUnitTest suite run.
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    23
        TestResultReporter report:aTestResult format:#xml on: aStream
268
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
    24
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
    25
    [author:]
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
    26
        Jan Vranji
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
    27
        documentation & tap format added by Claus Gittinger
267
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    28
"
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    29
!
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    30
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    31
examples
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    32
"
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    33
    |testResult|
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    34
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    35
    testResult := RegressionTests::IntegerTest suite run.
268
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
    36
    TestResultReporter report:testResult format:#xml on:Transcript.
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
    37
    TestResultReporter report:testResult format:#tap on:Transcript.
267
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    38
"
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    39
! !
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    40
268
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
    41
!TestResultReporter class methodsFor:'queries'!
267
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    42
268
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
    43
supportedFormats
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
    44
    ^ #(
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
    45
        (#'xml'   'a junit-like format')
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
    46
        (#'tap'   'perl TAP unit test format')
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
    47
    )
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
    48
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
    49
    "Created: / 30-07-2011 / 10:18:18 / cg"
267
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    50
! !
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
!TestResultReporter class methodsFor:'reporting'!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
report: aTestResult format: format as: stringOrFilename
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
    self new report: aTestResult format: format as: stringOrFilename
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
report: aTestResult format: format on: stream
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
    self new report: aTestResult format: format on: stream
267
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    62
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    63
    "
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    64
     self report:(RegressionTests::IntegerTest runTests) format:#xml on:Transcript
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    65
    "
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    66
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    67
    "Modified (comment): / 30-07-2011 / 09:37:53 / cg"
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
! !
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
!TestResultReporter methodsFor:'reporting'!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
267
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    72
report:formatSymbol
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    73
    "currently supported formatSymbols:
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    74
            xml"
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    75
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
    |reportFormatSelector|
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
267
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    78
    reportFormatSelector := self reportFormatSelector:formatSymbol.
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
    (self respondsTo: reportFormatSelector)
267
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    80
        ifTrue:[self perform: reportFormatSelector]
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    81
        ifFalse:[self error:'Unsupported format: ', formatSymbol].
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    82
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
    83
    "Modified (comment): / 30-07-2011 / 09:37:31 / cg"
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
report: aTestResult format: format as: stringOrFilename
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
    | s |
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
    s := stringOrFilename asFilename writeStream.
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
    [ self report: aTestResult format: format on: s]
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
	ensure:[s close].
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
report: aTestResult format: aSymbol on: aStream
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
    result := aTestResult.
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
    stream := aStream.
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
    self report: aSymbol
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
reportFormatSelector:format
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
    ^ ('report' , format asString capitalized) asSymbol
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
! !
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
268
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   105
!TestResultReporter methodsFor:'reporting - tap'!
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   106
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   107
reportTap
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   108
    "TAP (perl unit test) report format"
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   109
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   110
    |idx reportWith|
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   111
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   112
    "example:
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   113
        1..4
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   114
        ok 1 - Input file opened
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   115
        not ok 2 - First line of the input valid
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   116
        ok 3 - Read the rest of the file
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   117
        not ok 4 - Summarized correctly # TODO Not written yet
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   118
    "
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   119
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   120
    "/ what about not-executed tests - why only runCount ?
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   121
    stream nextPutLine: ('1..%1' bindWith:result runCount).
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   122
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   123
    reportWith := 
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   124
        [:tests :status |
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   125
            tests do:[:each | self reportTapTest: each index: idx result: status. idx := idx + 1 ]
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   126
        ].
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   127
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   128
    idx := 1.
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   129
    reportWith value:result passed value:#success.
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   130
    reportWith value:result failures value:#failure.
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   131
    reportWith value:result errors value:#error.
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   132
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   133
    "Created: / 30-07-2011 / 10:12:31 / cg"
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   134
!
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   135
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   136
reportTapTest: test index:index result: testResult
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   137
    | testClassName executionTime  testDescription statusString|
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   138
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   139
    testClassName := self sunitNameOf: test class.
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   140
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   141
    "most tests do not know, and return nil here!!"
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   142
    executionTime := test executionTime ? 0.0.
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   143
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   144
    testDescription := '%1-%2 (%3ms)'
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   145
                            bindWith:testClassName
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   146
                            with:test selector
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   147
                            with:executionTime.
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   148
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   149
    statusString := (testResult == #success)
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   150
                        ifTrue:['ok']
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   151
                        ifFalse:['not ok'].
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   152
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   153
    stream nextPutLine:('%1 %2 - %3'
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   154
                            bindWith:statusString
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   155
                            with:index
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   156
                            with:testDescription).
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   157
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   158
    "Created: / 30-07-2011 / 10:28:06 / cg"
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   159
! !
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   160
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
!TestResultReporter methodsFor:'reporting - xml'!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
reportXml
267
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
   164
    "JUnit-like XML unittest report format"
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
    stream
267
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
   167
        nextPutLine: '<?xml version="1.0"?>';
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
   168
        nextPutLine: '<unittest-results>'.
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
    result passed   do:[:each|self reportXmlTest: each result: #success].
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
    result failures do:[:each|self reportXmlTest: each result: #failure].
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
    result errors   do:[:each|self reportXmlTest: each result: #error].
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
    stream
267
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
   175
        nextPutLine: '</unittest-results>'
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
   176
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
   177
    "Modified (format): / 30-07-2011 / 09:54:16 / cg"
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
reportXmlTest: test result: testResult
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
    "
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
    Example:
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
    <test
267
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
   185
        duration='0.0188629627228'
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
   186
        status='error'
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
   187
        fixture='bitten.tests.web_ui.SourceFileLinkFormatterTestCase'
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
   188
        name='test_format_link_not_in_repos_with_line'
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
   189
        file='/usr/src/trac-bitten-0.6b2.dfsg/bitten/tests/web_ui.py'>
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
    "
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
267
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
   192
    | testClassName executionTime |
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
   193
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
    testClassName := self sunitNameOf: test class.
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
267
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
   196
    "most tests do not know, and return nil here!!"
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
   197
    executionTime := test executionTime ? 0.0.
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
   198
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
    stream
267
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
   200
        nextPutAll:'<test duration="'; nextPutAll:executionTime; nextPutLine:'"'; 
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
   201
        tab; nextPutAll:'status="'; nextPutAll: testResult; nextPutLine:'"';
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
   202
        tab; nextPutAll:'ficture="'; nextPutAll: testClassName; nextPutLine:'"';
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
   203
        tab; nextPutAll:'name="'; nextPutAll: test selector; nextPutLine:'"';
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
   204
        "It seems that some tools requires the file attributes. So we supply one :-)"
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
   205
        tab; nextPutAll:'file="'; nextPutAll: testClassName , '.st'; nextPutLine:'">'.
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
    testResult ~= #success ifTrue:[self reportXmlTraceback: test].
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
    stream nextPutLine:'</test>'.
267
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
   210
7d2e67524850 documented the code (sigh)
Claus Gittinger <cg@exept.de>
parents: 222
diff changeset
   211
    "Modified: / 30-07-2011 / 10:10:02 / cg"
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
reportXmlTraceback: test
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
    "
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
	Prints a traceback to the stream.
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
	This is dialect-specific, so we have to check...
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
    "
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
    "Smalltalk/X dialect detection..."
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
    ((Smalltalk respondsTo: #isSmalltalkX) and:[Smalltalk isSmalltalkX])
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
	ifTrue:[^self reportXmlTracebackStX: test]
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   224
!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   225
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
reportXmlTracebackStX: test
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
    stream nextPutLine:'<traceback><!![CDATA['.
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
    [ test debug ]
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
	on: GenericException
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
	do: [:ex|
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
	    ex suspendedContext fullPrintAllOn: stream].
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
    stream nextPutLine:']]></traceback>'.
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
    "Modified: / 07-12-2009 / 14:06:48 / Jan Vrany <jan.vrant@fit.cvut.cz>"
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
! !
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
!TestResultReporter methodsFor:'utilities'!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
sunitNameOf: aClass
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   244
    "No all SUnit versions comes with sunitName
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   245
     (at least Smalltalk/X 3.1)"
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   247
    ^(aClass respondsTo:#sunitName)
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
	ifTrue:[aClass sunitName]
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
	ifFalse:[aClass printString]
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
! !
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   252
!TestResultReporter class methodsFor:'documentation'!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
version
268
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   255
    ^ '$Header: /cvs/stx/stx/goodies/sunit/TestResultReporter.st,v 1.3 2011-07-30 08:32:26 cg Exp $'
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   256
!
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   257
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   258
version_CVS
02c41854a7b8 added tap (perl unit test) output format
Claus Gittinger <cg@exept.de>
parents: 267
diff changeset
   259
    ^ '$Header: /cvs/stx/stx/goodies/sunit/TestResultReporter.st,v 1.3 2011-07-30 08:32:26 cg Exp $'
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   261
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   262
version_SVN
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
    ^ '§Id§'
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
! !