TestCoverageReporter.st
author Stefan Vogel <sv@exept.de>
Tue, 23 Apr 2013 12:33:43 +0200
changeset 577 3dea1e941af7
parent 510 df4b9666403b
child 582 788c7d7fcfc6
permissions -rw-r--r--
class: TestResource added: #safeTearDown changed: #makeAvailable Take care of AbortOperationRequest being raised in Debugger in tearDown after an errornous test case.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
510
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
     1
"
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
     2
 COPYRIGHT (c) 2012 by eXept Software AG
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
     3
              All Rights Reserved
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
     4
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
     5
 This software is furnished under a license and may be used
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
     6
 only in accordance with the terms of that license and with the
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
     8
 be provided or otherwise made available to, or used by, any
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
     9
 other person.  No title to or ownership of the software is
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    10
 hereby transferred.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    11
"
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
"{ Package: 'stx:goodies/sunit' }"
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
Object subclass:#TestCoverageReporter
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
	instanceVariableNames:'packages stream'
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
	classVariableNames:''
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
	poolDictionaries:''
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	category:'SUnit-Report'
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
!
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!TestCoverageReporter class methodsFor:'documentation'!
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
510
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    23
copyright
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    24
"
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    25
 COPYRIGHT (c) 2012 by eXept Software AG
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    26
              All Rights Reserved
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    27
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    28
 This software is furnished under a license and may be used
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    29
 only in accordance with the terms of that license and with the
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    30
 inclusion of the above copyright notice.   This software may not
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    31
 be provided or otherwise made available to, or used by, any
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    32
 other person.  No title to or ownership of the software is
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    33
 hereby transferred.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    34
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    35
"
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    36
!
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    37
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
documentation
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
"
510
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    40
    this is used as a last step in jenkins automated builds.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    41
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
    Currently supported formats are:
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
        #xml_cobertura      - a cobertura compatible format
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
    public API entry:
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
        |aTestResult|
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
        InstrumentingCompiler compilePackage:'mypackageID'.
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
        InstrumentationContext new run:[
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
            aTestResult := aUnitTest suite run.
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
        ].
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
        'testResult.xml' asFilename writingFileDo:[:stream |
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
            TestResultReporter report:aTestResult format:#xml_jUnit on:stream.
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
        ].
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
        'testCoverage.xml' asFilename writingFileDo:[:stream |
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
                TestCoverageReporter reportPackages:{ 'mypackageID' } format:#xml_cobertura on:stream.
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
        ].
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
    [author:]
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
        Claus Gittinger
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
    [see also:]
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
        cobertura
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
            http://wiki.hudson-ci.org/display/HUDSON/PerfPublisher+Plugin
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
            https://raw.github.com/jenkinsci/cobertura-plugin/master/src/test/resources/hudson/plugins/cobertura/coverage-with-data.xml    
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
"
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
!
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
examples
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
"
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
    Smalltalk loadPackage:'exept:regression'
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
                                                                               [exBegin]
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
    |suite result testResult|
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
    InstrumentingCompiler compilePackage:'stx:libjavascript'.
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
    InstrumentationContext new run:[
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
        testResult := RegressionTests::JavaScriptTests suite run.
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
    ].
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
    'testResult.xml' asFilename writingFileDo:[:stream |
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
        TestResultReporter report:testResult format:#xml_jUnit on:stream.
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
    ].
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
    'testCoverage.xml' asFilename writingFileDo:[:stream |
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
        TestCoverageReporter reportPackages:{ 'stx:libjavascript' } format:#xml_cobertura on:stream.
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
    ].
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
                                                                               [exEnd]
510
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    88
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    89
                                                                               [exBegin]
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    90
    |suite result testResult|
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    91
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    92
    InstrumentingCompiler compilePackage:'stx:libjavascript'.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    93
    InstrumentationContext new run:[
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    94
        testResult := RegressionTests::JavaScriptTests suite run.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    95
    ].
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    96
'
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    97
    TestResultReporter report:testResult format:#xml_jUnit on:Transcript.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    98
'.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    99
    TestCoverageReporter reportPackages:{ 'stx:libjavascript' } format:#xml_cobertura on:Transcript.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   100
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   101
                                                                               [exEnd]
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   102
"
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   103
!
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   104
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   105
format_cobertura_dtd04
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   106
"
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   107
<!!ELEMENT coverage (sources?,packages)>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   108
<!!ATTLIST coverage line-rate        CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   109
<!!ATTLIST coverage branch-rate      CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   110
<!!ATTLIST coverage lines-covered    CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   111
<!!ATTLIST coverage lines-valid      CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   112
<!!ATTLIST coverage branches-covered CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   113
<!!ATTLIST coverage branches-valid   CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   114
<!!ATTLIST coverage complexity       CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   115
<!!ATTLIST coverage version          CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   116
<!!ATTLIST coverage timestamp        CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   117
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   118
<!!ELEMENT sources (source*)>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   119
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   120
<!!ELEMENT source (#PCDATA)>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   121
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   122
<!!ELEMENT packages (package*)>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   123
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   124
<!!ELEMENT package (classes)>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   125
<!!ATTLIST package name        CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   126
<!!ATTLIST package line-rate   CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   127
<!!ATTLIST package branch-rate CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   128
<!!ATTLIST package complexity  CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   129
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   130
<!!ELEMENT classes (class*)>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   131
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   132
<!!ELEMENT class (methods,lines)>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   133
<!!ATTLIST class name        CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   134
<!!ATTLIST class filename    CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   135
<!!ATTLIST class line-rate   CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   136
<!!ATTLIST class branch-rate CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   137
<!!ATTLIST class complexity  CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   138
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   139
<!!ELEMENT methods (method*)>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   140
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   141
<!!ELEMENT method (lines)>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   142
<!!ATTLIST method name        CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   143
<!!ATTLIST method signature   CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   144
<!!ATTLIST method line-rate   CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   145
<!!ATTLIST method branch-rate CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   146
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   147
<!!ELEMENT lines (line*)>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   148
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   149
<!!ELEMENT line (conditions*)>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   150
<!!ATTLIST line number CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   151
<!!ATTLIST line hits   CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   152
<!!ATTLIST line branch CDATA ""false"">
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   153
<!!ATTLIST line condition-coverage CDATA ""100%"">
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   154
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   155
<!!ELEMENT conditions (condition*)>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   156
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   157
<!!ELEMENT condition EMPTY>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   158
<!!ATTLIST condition number CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   159
<!!ATTLIST condition type CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   160
<!!ATTLIST condition coverage CDATA #REQUIRED>
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
"
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
! !
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
!TestCoverageReporter class methodsFor:'queries'!
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
supportedFormats
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
   "return a list of formats and short-info-string, as per supported format symbol"
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
    ^ #(
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
        (#'xml_cobertura'       'a cobertura-like xml format')
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
    )
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
    "Created: / 30-07-2011 / 10:18:18 / cg"
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
! !
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
!TestCoverageReporter class methodsFor:'reporting'!
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
reportPackages: aCollectionOfPackages format: format on: stream
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
    self new 
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
        reportPackages: aCollectionOfPackages format: format on: stream
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
! !
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
!TestCoverageReporter methodsFor:'reporting'!
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
reportPackages: aCollectionOfPackages format: aSymbol on: aStream
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
    packages := aCollectionOfPackages.
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
    stream := aStream.
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
    self report: aSymbol
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
! !
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
!TestCoverageReporter methodsFor:'reporting - xml-cobertura'!
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
510
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   194
reportXml_cobertura
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
"
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
 self new 
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
        stream:Transcipt;
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
        reportXml_coberturaForPackage:'stx:libbasic'
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
"
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
    "generate cobertura compatible XML coverage report format"
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
510
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   202
    |instrumentedClasses uninstrumentedClasses 
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   203
     version lineRate branchRate
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   204
     linesCovered linesValid branchesCovered branchesValid complexity|
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   205
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   206
    lineRate := 50.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   207
    branchRate := 61.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   208
    version := '0.4'.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   209
    linesCovered := 1000.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   210
    linesValid := 1000.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   211
    branchesCovered := 1000.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   212
    branchesValid := 1000.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   213
    complexity := 1.5.
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
    instrumentedClasses := OrderedCollection new.    
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
    uninstrumentedClasses := OrderedCollection new.    
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
510
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   218
    packages do:[:eachPackageID |
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   219
        Smalltalk allClassesInPackage:eachPackageID do:[:eachClass |
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   220
            ((eachClass methodDictionary values contains:[:someMethod | someMethod isInstrumented])
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   221
            or:[ (eachClass class methodDictionary values contains:[:someMethod | someMethod isInstrumented]) ])
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   222
            ifTrue:[
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   223
                instrumentedClasses add:eachClass
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   224
            ] ifFalse:[
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   225
                uninstrumentedClasses add:eachClass
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   226
            ].
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
        ].
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
    ].
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
    stream
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
        nextPutLine: '<?xml version="1.0"?>';
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
        nextPutLine: '<!!--DOCTYPE coverage SYSTEM "http://cobertura.sourceforge.net/xml/coverage-03.dtd"-->';
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
        nextPutAll: '<coverage';
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
        nextPutAll:(' line-rate="%1"' bindWith:lineRate);
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
        nextPutAll:(' branch-rate="%1"' bindWith:branchRate);
510
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   236
        nextPutAll:(' version="%1"' bindWith:version);
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   237
        nextPutAll:(' lines-covered="%1"' bindWith:linesCovered);
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   238
        nextPutAll:(' lines-valid="%1"' bindWith:linesValid);
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   239
        nextPutAll:(' branches-covered="%1"' bindWith:branchesCovered);
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   240
        nextPutAll:(' branches-valid="%1"' bindWith:branchesValid);
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   241
        nextPutAll:(' complexity="%1"' bindWith:complexity);
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
        nextPutAll:(' timestamp="%1>"' bindWith:Timestamp now utcSecondsSince1970 * 1000 "millis").
510
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   243
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   244
    packages do:[:eachPackageID |
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   245
    ].
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   246
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   247
    stream
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   248
        nextPutAll: '</coverage'.
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
! !
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
!TestCoverageReporter methodsFor:'reporting-private'!
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   252
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
report:formatSymbol
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
    "currently supported formatSymbols:
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
            xml_cobertura"
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
    |reportFormatSelector|
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   259
    reportFormatSelector := self reportFormatSelector:formatSymbol.
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
    (self respondsTo: reportFormatSelector)
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   261
        ifTrue:[self perform: reportFormatSelector]
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   262
        ifFalse:[self error:'Unsupported format: ', formatSymbol].
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
    "Modified (comment): / 03-08-2011 / 12:57:54 / cg"
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
!
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
reportFormatSelector:format
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   268
    ^ ('report' , format asString capitalized) asSymbol
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
! !
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   271
!TestCoverageReporter class methodsFor:'documentation'!
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   272
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   273
version
510
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   274
    ^ '$Header: /cvs/stx/stx/goodies/sunit/TestCoverageReporter.st,v 1.2 2012-11-07 18:40:46 cg Exp $'
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   275
!
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   276
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
version_CVS
510
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   278
    ^ '$Header: /cvs/stx/stx/goodies/sunit/TestCoverageReporter.st,v 1.2 2012-11-07 18:40:46 cg Exp $'
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   279
! !