TestCoverageReporter.st
author Claus Gittinger <cg@exept.de>
Sun, 01 Jul 2018 12:52:19 +0200
changeset 719 2c96860ad5cb
parent 715 400e00d727d1
permissions -rw-r--r--
#FEATURE by cg class: TestCase::Should class definition added: #assertSelector #beInstanceOf: #equal: #not #raise: changed: #be:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
715
400e00d727d1 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 699
diff changeset
     1
"{ Encoding: utf8 }"
400e00d727d1 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 699
diff changeset
     2
510
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
     3
"
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
     4
 COPYRIGHT (c) 2012 by eXept Software AG
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
     5
              All Rights Reserved
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
     6
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
     7
 This software is furnished under a license and may be used
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
     8
 only in accordance with the terms of that license and with the
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
     9
 inclusion of the above copyright notice.   This software may not
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    10
 be provided or otherwise made available to, or used by, any
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    11
 other person.  No title to or ownership of the software is
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    12
 hereby transferred.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    13
"
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
"{ Package: 'stx:goodies/sunit' }"
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
605
1a2fca0ef379 class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 582
diff changeset
    16
"{ NameSpace: Smalltalk }"
1a2fca0ef379 class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 582
diff changeset
    17
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
Object subclass:#TestCoverageReporter
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	instanceVariableNames:'packages stream'
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	classVariableNames:''
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
	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
    22
	category:'SUnit-Smalltalk/X-Report'
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
!
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
!TestCoverageReporter class methodsFor:'documentation'!
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
510
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    27
copyright
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    28
"
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    29
 COPYRIGHT (c) 2012 by eXept Software AG
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    30
              All Rights Reserved
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    31
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    32
 This software is furnished under a license and may be used
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    33
 only in accordance with the terms of that license and with the
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    34
 inclusion of the above copyright notice.   This software may not
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    35
 be provided or otherwise made available to, or used by, any
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    36
 other person.  No title to or ownership of the software is
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    37
 hereby transferred.
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
"
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    40
!
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
documentation
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
"
510
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    44
    this is used as a last step in jenkins automated builds.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    45
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
    Currently supported formats are:
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
        #xml_cobertura      - a cobertura compatible format
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
    public API entry:
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
        |aTestResult|
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
        InstrumentingCompiler compilePackage:'mypackageID'.
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
        InstrumentationContext new run:[
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
            aTestResult := aUnitTest suite run.
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
        ].
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
        'testResult.xml' asFilename writingFileDo:[:stream |
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
            TestResultReporter report:aTestResult format:#xml_jUnit on:stream.
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
        ].
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
        'testCoverage.xml' asFilename writingFileDo:[:stream |
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
                TestCoverageReporter reportPackages:{ 'mypackageID' } format:#xml_cobertura on:stream.
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
        ].
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
    [author:]
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
        Claus Gittinger
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
    [see also:]
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
        cobertura
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
            http://wiki.hudson-ci.org/display/HUDSON/PerfPublisher+Plugin
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
            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
    70
"
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
!
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
examples
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
"
679
6f096dc01c3e #OTHER by mawalch
mawalch
parents: 605
diff changeset
    75
    Smalltalk loadPackage:'stx/goodies:regression'
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
                                                                               [exBegin]
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
    |suite result testResult|
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
    InstrumentingCompiler compilePackage:'stx:libjavascript'.
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
    InstrumentationContext new run:[
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
        testResult := RegressionTests::JavaScriptTests suite run.
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
    ].
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
    'testResult.xml' asFilename writingFileDo:[:stream |
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
        TestResultReporter report:testResult format:#xml_jUnit on:stream.
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
    ].
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
    'testCoverage.xml' asFilename writingFileDo:[:stream |
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
        TestCoverageReporter reportPackages:{ 'stx:libjavascript' } format:#xml_cobertura on:stream.
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
    ].
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
                                                                               [exEnd]
510
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    92
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    93
                                                                               [exBegin]
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    94
    |suite result testResult|
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
    InstrumentingCompiler compilePackage:'stx:libjavascript'.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    97
    InstrumentationContext new run:[
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    98
        testResult := RegressionTests::JavaScriptTests suite run.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
    99
    ].
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
    TestResultReporter report:testResult format:#xml_jUnit 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
    TestCoverageReporter reportPackages:{ 'stx:libjavascript' } format:#xml_cobertura on:Transcript.
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
                                                                               [exEnd]
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
!
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
format_cobertura_dtd04
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   110
"
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   111
<!!ELEMENT coverage (sources?,packages)>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   112
<!!ATTLIST coverage line-rate        CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   113
<!!ATTLIST coverage branch-rate      CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   114
<!!ATTLIST coverage lines-covered    CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   115
<!!ATTLIST coverage lines-valid      CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   116
<!!ATTLIST coverage branches-covered CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   117
<!!ATTLIST coverage branches-valid   CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   118
<!!ATTLIST coverage complexity       CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   119
<!!ATTLIST coverage version          CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   120
<!!ATTLIST coverage timestamp        CDATA #REQUIRED>
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 sources (source*)>
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 source (#PCDATA)>
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 packages (package*)>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   127
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   128
<!!ELEMENT package (classes)>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   129
<!!ATTLIST package name        CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   130
<!!ATTLIST package line-rate   CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   131
<!!ATTLIST package branch-rate CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   132
<!!ATTLIST package complexity  CDATA #REQUIRED>
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 classes (class*)>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   135
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   136
<!!ELEMENT class (methods,lines)>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   137
<!!ATTLIST class name        CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   138
<!!ATTLIST class filename    CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   139
<!!ATTLIST class line-rate   CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   140
<!!ATTLIST class branch-rate CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   141
<!!ATTLIST class complexity  CDATA #REQUIRED>
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 methods (method*)>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   144
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   145
<!!ELEMENT method (lines)>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   146
<!!ATTLIST method name        CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   147
<!!ATTLIST method signature   CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   148
<!!ATTLIST method line-rate   CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   149
<!!ATTLIST method branch-rate CDATA #REQUIRED>
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 lines (line*)>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   152
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   153
<!!ELEMENT line (conditions*)>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   154
<!!ATTLIST line number CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   155
<!!ATTLIST line hits   CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   156
<!!ATTLIST line branch CDATA ""false"">
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   157
<!!ATTLIST line condition-coverage CDATA ""100%"">
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 conditions (condition*)>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   160
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   161
<!!ELEMENT condition EMPTY>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   162
<!!ATTLIST condition number CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   163
<!!ATTLIST condition type CDATA #REQUIRED>
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   164
<!!ATTLIST condition coverage CDATA #REQUIRED>
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
"
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
! !
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
!TestCoverageReporter class methodsFor:'queries'!
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
supportedFormats
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
   "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
   172
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
    ^ #(
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
        (#'xml_cobertura'       'a cobertura-like xml format')
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
    )
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
    "Created: / 30-07-2011 / 10:18:18 / cg"
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
! !
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
!TestCoverageReporter class methodsFor:'reporting'!
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
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
    self new 
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
        reportPackages: aCollectionOfPackages format: format on: stream
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
! !
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
!TestCoverageReporter methodsFor:'reporting'!
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
reportPackages: aCollectionOfPackages format: aSymbol on: aStream
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
    packages := aCollectionOfPackages.
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
    stream := aStream.
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
    self report: aSymbol
715
400e00d727d1 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 699
diff changeset
   194
!
400e00d727d1 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 699
diff changeset
   195
400e00d727d1 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 699
diff changeset
   196
reportXml_coberturaForPackage:aCollectionOfPackages
400e00d727d1 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 699
diff changeset
   197
    packages := aCollectionOfPackages.
400e00d727d1 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 699
diff changeset
   198
    self report:#xml_cobertura
400e00d727d1 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 699
diff changeset
   199
400e00d727d1 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 699
diff changeset
   200
    "Created: / 21-06-2018 / 07:46:51 / Claus Gittinger"
400e00d727d1 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 699
diff changeset
   201
!
400e00d727d1 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 699
diff changeset
   202
400e00d727d1 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 699
diff changeset
   203
stream:aStream
400e00d727d1 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 699
diff changeset
   204
    stream := aStream.
400e00d727d1 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 699
diff changeset
   205
400e00d727d1 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 699
diff changeset
   206
    "Created: / 21-06-2018 / 07:45:47 / Claus Gittinger"
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
! !
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
!TestCoverageReporter methodsFor:'reporting - xml-cobertura'!
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
510
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   211
reportXml_cobertura
715
400e00d727d1 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 699
diff changeset
   212
    "generate cobertura compatible XML coverage report format"
400e00d727d1 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 699
diff changeset
   213
400e00d727d1 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 699
diff changeset
   214
    "
400e00d727d1 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 699
diff changeset
   215
     self new
699
8c5c77024ad3 #DOCUMENTATION by mawalch
mawalch
parents: 679
diff changeset
   216
        stream:Transcript;
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
        reportXml_coberturaForPackage:'stx:libbasic'
715
400e00d727d1 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 699
diff changeset
   218
    "
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
699
8c5c77024ad3 #DOCUMENTATION by mawalch
mawalch
parents: 679
diff changeset
   220
    |instrumentedClasses uninstrumentedClasses
510
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   221
     version lineRate branchRate
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   222
     linesCovered linesValid branchesCovered branchesValid complexity|
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   223
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   224
    lineRate := 50.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   225
    branchRate := 61.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   226
    version := '0.4'.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   227
    linesCovered := 1000.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   228
    linesValid := 1000.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   229
    branchesCovered := 1000.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   230
    branchesValid := 1000.
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   231
    complexity := 1.5.
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
699
8c5c77024ad3 #DOCUMENTATION by mawalch
mawalch
parents: 679
diff changeset
   233
    instrumentedClasses := OrderedCollection new.
8c5c77024ad3 #DOCUMENTATION by mawalch
mawalch
parents: 679
diff changeset
   234
    uninstrumentedClasses := OrderedCollection new.
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
510
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   236
    packages do:[:eachPackageID |
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   237
        Smalltalk allClassesInPackage:eachPackageID do:[:eachClass |
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   238
            ((eachClass methodDictionary values contains:[:someMethod | someMethod isInstrumented])
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   239
            or:[ (eachClass class methodDictionary values contains:[:someMethod | someMethod isInstrumented]) ])
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   240
            ifTrue:[
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   241
                instrumentedClasses add:eachClass
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   242
            ] ifFalse:[
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   243
                uninstrumentedClasses add:eachClass
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   244
            ].
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   245
        ].
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
    ].
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   247
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
    stream
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
        nextPutLine: '<?xml version="1.0"?>';
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
        nextPutLine: '<!!--DOCTYPE coverage SYSTEM "http://cobertura.sourceforge.net/xml/coverage-03.dtd"-->';
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
        nextPutAll: '<coverage';
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   252
        nextPutAll:(' line-rate="%1"' bindWith:lineRate);
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
        nextPutAll:(' branch-rate="%1"' bindWith:branchRate);
510
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   254
        nextPutAll:(' version="%1"' bindWith:version);
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   255
        nextPutAll:(' lines-covered="%1"' bindWith:linesCovered);
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   256
        nextPutAll:(' lines-valid="%1"' bindWith:linesValid);
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   257
        nextPutAll:(' branches-covered="%1"' bindWith:branchesCovered);
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   258
        nextPutAll:(' branches-valid="%1"' bindWith:branchesValid);
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   259
        nextPutAll:(' complexity="%1"' bindWith:complexity);
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
        nextPutAll:(' timestamp="%1>"' bindWith:Timestamp now utcSecondsSince1970 * 1000 "millis").
510
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   261
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   262
    packages do:[:eachPackageID |
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   263
    ].
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   264
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   265
    stream
df4b9666403b class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 507
diff changeset
   266
        nextPutAll: '</coverage'.
699
8c5c77024ad3 #DOCUMENTATION by mawalch
mawalch
parents: 679
diff changeset
   267
8c5c77024ad3 #DOCUMENTATION by mawalch
mawalch
parents: 679
diff changeset
   268
    "Modified (comment): / 25-01-2018 / 19:45:29 / mawalch"
715
400e00d727d1 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 699
diff changeset
   269
    "Modified (comment): / 21-06-2018 / 07:46:07 / Claus Gittinger"
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
! !
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   271
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   272
!TestCoverageReporter methodsFor:'reporting-private'!
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   273
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
report:formatSymbol
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   275
    "currently supported formatSymbols:
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   276
            xml_cobertura"
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   278
    |reportFormatSelector|
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   279
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   280
    reportFormatSelector := self reportFormatSelector:formatSymbol.
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   281
    (self respondsTo: reportFormatSelector)
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   282
        ifTrue:[self perform: reportFormatSelector]
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   283
        ifFalse:[self error:'Unsupported format: ', formatSymbol].
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   284
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   285
    "Modified (comment): / 03-08-2011 / 12:57:54 / cg"
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   286
!
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   287
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   288
reportFormatSelector:format
605
1a2fca0ef379 class: TestCoverageReporter
Claus Gittinger <cg@exept.de>
parents: 582
diff changeset
   289
    ^ ('report' , format asString asUppercaseFirst) asSymbol
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   290
! !
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   291
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   292
!TestCoverageReporter class methodsFor:'documentation'!
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   293
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   294
version
679
6f096dc01c3e #OTHER by mawalch
mawalch
parents: 605
diff changeset
   295
    ^ '$Header$'
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   296
!
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   297
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   298
version_CVS
679
6f096dc01c3e #OTHER by mawalch
mawalch
parents: 605
diff changeset
   299
    ^ '$Header$'
507
ec48d46dce83 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   300
! !
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
   301