TestCoverageReporter.st
author mawalch
Thu, 07 Jul 2016 20:21:43 +0200
changeset 655 a949c7616b2a
parent 605 1a2fca0ef379
child 679 6f096dc01c3e
permissions -rw-r--r--
#OTHER by mawalch Spelling fixes.
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
605
1a2fca0ef379 class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 582
diff changeset
    14
"{ NameSpace: Smalltalk }"
1a2fca0ef379 class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 582
diff changeset
    15
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
Object subclass:#TestCoverageReporter
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
	instanceVariableNames:'packages stream'
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	classVariableNames:''
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	poolDictionaries:''
582
788c7d7fcfc6 Moved to category "SUnit-Smalltalk/X-Report" as it is St/X-specific (and mostly obsolete)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 510
diff changeset
    20
	category:'SUnit-Smalltalk/X-Report'
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
!TestCoverageReporter class methodsFor:'documentation'!
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
510
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    25
copyright
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    26
"
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    27
 COPYRIGHT (c) 2012 by eXept Software AG
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    28
              All Rights Reserved
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    29
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    30
 This software is furnished under a license and may be used
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    31
 only in accordance with the terms of that license and with the
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    32
 inclusion of the above copyright notice.   This software may not
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    33
 be provided or otherwise made available to, or used by, any
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    34
 other person.  No title to or ownership of the software is
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    35
 hereby transferred.
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
"
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    38
!
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    39
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
documentation
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
"
510
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    42
    this is used as a last step in jenkins automated builds.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    43
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
    Currently supported formats are:
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
        #xml_cobertura      - a cobertura compatible format
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
    public API entry:
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
        |aTestResult|
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
        InstrumentingCompiler compilePackage:'mypackageID'.
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
        InstrumentationContext new run:[
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
            aTestResult := aUnitTest suite run.
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
        ].
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
        'testResult.xml' asFilename writingFileDo:[:stream |
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
            TestResultReporter report:aTestResult format:#xml_jUnit on:stream.
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
        ].
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
        'testCoverage.xml' asFilename writingFileDo:[:stream |
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
                TestCoverageReporter reportPackages:{ 'mypackageID' } format:#xml_cobertura on:stream.
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
        ].
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
    [author:]
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
        Claus Gittinger
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
    [see also:]
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
        cobertura
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
            http://wiki.hudson-ci.org/display/HUDSON/PerfPublisher+Plugin
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
            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
    68
"
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
!
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
examples
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
"
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
    Smalltalk loadPackage:'exept:regression'
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
                                                                               [exBegin]
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
    |suite result testResult|
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
    InstrumentingCompiler compilePackage:'stx:libjavascript'.
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
    InstrumentationContext new run:[
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
        testResult := RegressionTests::JavaScriptTests suite run.
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
    ].
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
    'testResult.xml' asFilename writingFileDo:[:stream |
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
        TestResultReporter report:testResult format:#xml_jUnit on:stream.
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
    ].
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
    'testCoverage.xml' asFilename writingFileDo:[:stream |
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
        TestCoverageReporter reportPackages:{ 'stx:libjavascript' } format:#xml_cobertura on:stream.
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
    ].
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
                                                                               [exEnd]
510
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    90
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    91
                                                                               [exBegin]
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    92
    |suite result testResult|
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    93
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    94
    InstrumentingCompiler compilePackage:'stx:libjavascript'.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    95
    InstrumentationContext new run:[
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    96
        testResult := RegressionTests::JavaScriptTests suite run.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    97
    ].
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
    TestResultReporter report:testResult format:#xml_jUnit 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
    TestCoverageReporter reportPackages:{ 'stx:libjavascript' } format:#xml_cobertura on:Transcript.
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
                                                                               [exEnd]
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
!
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
format_cobertura_dtd04
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   108
"
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   109
<!!ELEMENT coverage (sources?,packages)>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   110
<!!ATTLIST coverage line-rate        CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   111
<!!ATTLIST coverage branch-rate      CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   112
<!!ATTLIST coverage lines-covered    CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   113
<!!ATTLIST coverage lines-valid      CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   114
<!!ATTLIST coverage branches-covered CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   115
<!!ATTLIST coverage branches-valid   CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   116
<!!ATTLIST coverage complexity       CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   117
<!!ATTLIST coverage version          CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   118
<!!ATTLIST coverage timestamp        CDATA #REQUIRED>
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 sources (source*)>
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 source (#PCDATA)>
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 packages (package*)>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   125
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   126
<!!ELEMENT package (classes)>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   127
<!!ATTLIST package name        CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   128
<!!ATTLIST package line-rate   CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   129
<!!ATTLIST package branch-rate CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   130
<!!ATTLIST package complexity  CDATA #REQUIRED>
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 classes (class*)>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   133
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   134
<!!ELEMENT class (methods,lines)>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   135
<!!ATTLIST class name        CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   136
<!!ATTLIST class filename    CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   137
<!!ATTLIST class line-rate   CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   138
<!!ATTLIST class branch-rate CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   139
<!!ATTLIST class complexity  CDATA #REQUIRED>
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 methods (method*)>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   142
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   143
<!!ELEMENT method (lines)>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   144
<!!ATTLIST method name        CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   145
<!!ATTLIST method signature   CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   146
<!!ATTLIST method line-rate   CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   147
<!!ATTLIST method branch-rate CDATA #REQUIRED>
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 lines (line*)>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   150
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   151
<!!ELEMENT line (conditions*)>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   152
<!!ATTLIST line number CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   153
<!!ATTLIST line hits   CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   154
<!!ATTLIST line branch CDATA ""false"">
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   155
<!!ATTLIST line condition-coverage CDATA ""100%"">
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 conditions (condition*)>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   158
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   159
<!!ELEMENT condition EMPTY>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   160
<!!ATTLIST condition number CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   161
<!!ATTLIST condition type CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   162
<!!ATTLIST condition coverage CDATA #REQUIRED>
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
"
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
! !
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
!TestCoverageReporter class methodsFor:'queries'!
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
supportedFormats
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
   "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
   170
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
    ^ #(
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
        (#'xml_cobertura'       'a cobertura-like xml format')
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
    )
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
    "Created: / 30-07-2011 / 10:18:18 / cg"
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
! !
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
!TestCoverageReporter class methodsFor:'reporting'!
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
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
    self new 
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
        reportPackages: aCollectionOfPackages format: format on: stream
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
! !
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
!TestCoverageReporter methodsFor:'reporting'!
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
reportPackages: aCollectionOfPackages format: aSymbol on: aStream
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
    packages := aCollectionOfPackages.
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
    stream := aStream.
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
    self report: aSymbol
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
! !
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
!TestCoverageReporter methodsFor:'reporting - xml-cobertura'!
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
510
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   196
reportXml_cobertura
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
"
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
 self new 
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
        stream:Transcipt;
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
        reportXml_coberturaForPackage:'stx:libbasic'
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
"
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
    "generate cobertura compatible XML coverage report format"
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
510
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   204
    |instrumentedClasses uninstrumentedClasses 
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   205
     version lineRate branchRate
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   206
     linesCovered linesValid branchesCovered branchesValid complexity|
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   207
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   208
    lineRate := 50.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   209
    branchRate := 61.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   210
    version := '0.4'.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   211
    linesCovered := 1000.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   212
    linesValid := 1000.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   213
    branchesCovered := 1000.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   214
    branchesValid := 1000.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   215
    complexity := 1.5.
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
    instrumentedClasses := OrderedCollection new.    
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
    uninstrumentedClasses := OrderedCollection new.    
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
510
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   220
    packages do:[:eachPackageID |
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   221
        Smalltalk allClassesInPackage:eachPackageID do:[:eachClass |
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   222
            ((eachClass methodDictionary values contains:[:someMethod | someMethod isInstrumented])
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   223
            or:[ (eachClass class methodDictionary values contains:[:someMethod | someMethod isInstrumented]) ])
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   224
            ifTrue:[
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   225
                instrumentedClasses add:eachClass
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   226
            ] ifFalse:[
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   227
                uninstrumentedClasses add:eachClass
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   228
            ].
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
        ].
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
    ].
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
    stream
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
        nextPutLine: '<?xml version="1.0"?>';
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
        nextPutLine: '<!!--DOCTYPE coverage SYSTEM "http://cobertura.sourceforge.net/xml/coverage-03.dtd"-->';
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
        nextPutAll: '<coverage';
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
        nextPutAll:(' line-rate="%1"' bindWith:lineRate);
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
        nextPutAll:(' branch-rate="%1"' bindWith:branchRate);
510
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   238
        nextPutAll:(' version="%1"' bindWith:version);
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   239
        nextPutAll:(' lines-covered="%1"' bindWith:linesCovered);
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   240
        nextPutAll:(' lines-valid="%1"' bindWith:linesValid);
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   241
        nextPutAll:(' branches-covered="%1"' bindWith:branchesCovered);
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   242
        nextPutAll:(' branches-valid="%1"' bindWith:branchesValid);
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   243
        nextPutAll:(' complexity="%1"' bindWith:complexity);
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   244
        nextPutAll:(' timestamp="%1>"' bindWith:Timestamp now utcSecondsSince1970 * 1000 "millis").
510
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
    packages do:[:eachPackageID |
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   247
    ].
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   248
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   249
    stream
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   250
        nextPutAll: '</coverage'.
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
! !
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   252
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
!TestCoverageReporter methodsFor:'reporting-private'!
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
report:formatSymbol
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
    "currently supported formatSymbols:
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
            xml_cobertura"
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|
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   261
    reportFormatSelector := self reportFormatSelector:formatSymbol.
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   262
    (self respondsTo: reportFormatSelector)
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
        ifTrue:[self perform: reportFormatSelector]
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
        ifFalse:[self error:'Unsupported format: ', formatSymbol].
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
    "Modified (comment): / 03-08-2011 / 12:57:54 / cg"
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
!
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   268
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
reportFormatSelector:format
605
1a2fca0ef379 class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 582
diff changeset
   270
    ^ ('report' , format asString asUppercaseFirst) asSymbol
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   271
! !
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   272
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   273
!TestCoverageReporter class methodsFor:'documentation'!
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   275
version
605
1a2fca0ef379 class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 582
diff changeset
   276
    ^ '$Header: /cvs/stx/stx/goodies/sunit/TestCoverageReporter.st,v 1.4 2015-02-18 15:05:27 cg Exp $'
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
!
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   278
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   279
version_CVS
605
1a2fca0ef379 class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 582
diff changeset
   280
    ^ '$Header: /cvs/stx/stx/goodies/sunit/TestCoverageReporter.st,v 1.4 2015-02-18 15:05:27 cg Exp $'
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   281
! !
582
788c7d7fcfc6 Moved to category "SUnit-Smalltalk/X-Report" as it is St/X-specific (and mostly obsolete)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 510
diff changeset
   282