Skip to content

Commit 3d6d261

Browse files
committed
🗄 Jacoco tests
1 parent 39f4e3c commit 3d6d261

6 files changed

Lines changed: 103 additions & 1 deletion

File tree

ReleaseNotes.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,15 @@
33

44
#### Release 0.1.5 - Upcoming
55

6+
###### Features
7+
68
1. Support for Group Coverage with Branch Coverage (mostly Coveralls)
79
2. Source encoding gets automatically chosen unless we configure flag `failOnNoEncoding` to `true`
810

11+
###### Bugs
12+
13+
1. Jacoco XML generation sometimes results in empty string.
14+
915
#### Release 0.1.4 - 2022/02/1
1016

1117
1. Url Fix for BitBucket
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
package org.jesperancinha.plugins.omni.reporter.domain.reports
2+
3+
import io.kotest.matchers.nulls.shouldNotBeNull
4+
import io.kotest.matchers.string.shouldEndWith
5+
import io.kotest.matchers.string.shouldHaveMinLength
6+
import io.kotest.matchers.string.shouldNotBeEmpty
7+
import io.kotest.matchers.string.shouldStartWith
8+
import io.kotest.matchers.types.shouldBeInstanceOf
9+
import org.jesperancinha.plugins.omni.reporter.processors.ReportType
10+
import org.jesperancinha.plugins.omni.reporter.utils.toFile
11+
import org.junit.jupiter.api.Test
12+
13+
internal class OmniJacocoFileAdapterTest {
14+
15+
@Test
16+
fun `should generate itg jacoco report`() {
17+
18+
val jacocoItg = javaClass.getResource("/jacoco.formats/jacoco-itg.xml")
19+
jacocoItg.shouldNotBeNull()
20+
val rootJacocoItg = javaClass.getResource("/jacoco.formats")
21+
rootJacocoItg.shouldNotBeNull()
22+
23+
val reportFileAdapter = ReportType.createReportFileAdapter(
24+
jacocoItg.toFile(),
25+
false,
26+
rootJacocoItg.toFile(),
27+
rootJacocoItg.toFile()
28+
)
29+
30+
reportFileAdapter.shouldBeInstanceOf<OmniJacocoFileAdapter>()
31+
32+
val generatePayload = reportFileAdapter.generatePayload(false, listOf(rootJacocoItg.toFile()))
33+
34+
generatePayload.shouldNotBeEmpty()
35+
generatePayload.shouldHaveMinLength(10)
36+
generatePayload.shouldStartWith("<")
37+
generatePayload.shouldEndWith(">")
38+
}
39+
40+
@Test
41+
fun `should generate pbr jacoco report`() {
42+
43+
val jacocoItg = javaClass.getResource("/jacoco.formats/jacoco-pbr.xml")
44+
jacocoItg.shouldNotBeNull()
45+
val rootJacocoItg = javaClass.getResource("/jacoco.formats")
46+
rootJacocoItg.shouldNotBeNull()
47+
48+
val reportFileAdapter = ReportType.createReportFileAdapter(
49+
jacocoItg.toFile(),
50+
false,
51+
rootJacocoItg.toFile(),
52+
rootJacocoItg.toFile()
53+
)
54+
55+
reportFileAdapter.shouldBeInstanceOf<OmniJacocoFileAdapter>()
56+
57+
val generatePayload = reportFileAdapter.generatePayload(false, listOf(rootJacocoItg.toFile()))
58+
59+
generatePayload.shouldNotBeEmpty()
60+
generatePayload.shouldHaveMinLength(10)
61+
generatePayload.shouldStartWith("<")
62+
generatePayload.shouldEndWith(">")
63+
}
64+
65+
@Test
66+
fun `should generate pjs jacoco report`() {
67+
68+
val jacocoItg = javaClass.getResource("/jacoco.formats/jacoco-pjs.xml")
69+
jacocoItg.shouldNotBeNull()
70+
val rootJacocoItg = javaClass.getResource("/jacoco.formats")
71+
rootJacocoItg.shouldNotBeNull()
72+
73+
val reportFileAdapter = ReportType.createReportFileAdapter(
74+
jacocoItg.toFile(),
75+
false,
76+
rootJacocoItg.toFile(),
77+
rootJacocoItg.toFile()
78+
)
79+
80+
reportFileAdapter.shouldBeInstanceOf<OmniJacocoFileAdapter>()
81+
82+
val generatePayload = reportFileAdapter.generatePayload(false, listOf(rootJacocoItg.toFile()))
83+
84+
generatePayload.shouldNotBeEmpty()
85+
generatePayload.shouldHaveMinLength(10)
86+
generatePayload.shouldStartWith("<")
87+
generatePayload.shouldEndWith(">")
88+
}
89+
}

src/test/kotlin/org/jesperancinha/plugins/omni/reporter/utils/Utils.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,15 @@ package org.jesperancinha.plugins.omni.reporter.utils
22

33
import java.io.File
44
import java.io.FileNotFoundException
5+
import java.net.URL
6+
import kotlin.io.path.toPath
57

68
class Utils {
79
companion object {
810
val root = File(
911
Utils::class.java.getResource("/")?.toURI() ?: throw FileNotFoundException()
1012
)
1113
}
12-
}
14+
}
15+
16+
fun URL.toFile(): File = this.toURI().toPath().toFile()
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><!DOCTYPE report PUBLIC "-//JACOCO//DTD Report 1.1//EN" "report.dtd"><report name="JaCoCo Coverage Report"><sessioninfo id="Joaos-MacBook-Pro.local-154b2a20" start="1643813483267" dump="1643813485437"/><package name="com/jesperancinha/performance/inputgenerator"><class name="com/jesperancinha/performance/inputgenerator/InputGeneratorOptions" sourcefilename="InputGeneratorOptions.java"><method name="&lt;init&gt;" desc="()V" line="5"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getNumberOfElements" desc="()I" line="19"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getFolder" desc="()Ljava/lang/String;" line="23"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getFilename" desc="()Ljava/lang/String;" line="27"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getIncrements" desc="()I" line="31"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="21"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="5"/><counter type="METHOD" missed="0" covered="5"/><counter type="CLASS" missed="0" covered="1"/></class><class name="com/jesperancinha/performance/inputgenerator/InputGenerator" sourcefilename="InputGenerator.java"><method name="&lt;init&gt;" desc="()V" line="14"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="main" desc="([Ljava/lang/String;)V" line="20"><counter type="INSTRUCTION" missed="0" covered="22"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="createGenerationFile" desc="(ILjava/lang/String;Ljava/lang/String;I)V" line="30"><counter type="INSTRUCTION" missed="0" covered="77"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="15"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getFormattedNumber" desc="(I)[B" line="52"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="toBytes" desc="(Ljava/lang/String;)[B" line="56"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getNextNumber" desc="(II)I" line="60"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="15"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="3" covered="122"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="1" covered="26"/><counter type="COMPLEXITY" missed="1" covered="7"/><counter type="METHOD" missed="1" covered="6"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="InputGenerator.java"><line nr="14" mi="3" ci="0" mb="0" cb="0"/><line nr="15" mi="0" ci="4" mb="0" cb="0"/><line nr="17" mi="0" ci="5" mb="0" cb="0"/><line nr="20" mi="0" ci="4" mb="0" cb="0"/><line nr="21" mi="0" ci="5" mb="0" cb="0"/><line nr="22" mi="0" ci="3" mb="0" cb="0"/><line nr="24" mi="0" ci="8" mb="0" cb="0"/><line nr="25" mi="0" ci="1" mb="0" cb="0"/><line nr="26" mi="0" ci="1" mb="0" cb="0"/><line nr="30" mi="0" ci="5" mb="0" cb="0"/><line nr="31" mi="0" ci="3" mb="0" cb="0"/><line nr="32" mi="0" ci="6" mb="0" cb="0"/><line nr="33" mi="0" ci="4" mb="0" cb="0"/><line nr="34" mi="0" ci="4" mb="0" cb="0"/><line nr="35" mi="0" ci="3" mb="0" cb="0"/><line nr="37" mi="0" ci="8" mb="0" cb="0"/><line nr="39" mi="0" ci="4" mb="0" cb="0"/><line nr="40" mi="0" ci="5" mb="0" cb="0"/><line nr="42" mi="0" ci="7" mb="0" cb="2"/><line nr="43" mi="0" ci="4" mb="0" cb="0"/><line nr="44" mi="0" ci="4" mb="0" cb="0"/><line nr="47" mi="0" ci="9" mb="0" cb="0"/><line nr="48" mi="0" ci="10" mb="0" cb="0"/><line nr="49" mi="0" ci="1" mb="0" cb="0"/><line nr="52" mi="0" ci="4" mb="0" cb="0"/><line nr="56" mi="0" ci="4" mb="0" cb="0"/><line nr="60" mi="0" ci="6" mb="0" cb="0"/><counter type="INSTRUCTION" missed="3" covered="122"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="1" covered="26"/><counter type="COMPLEXITY" missed="1" covered="7"/><counter type="METHOD" missed="1" covered="6"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="InputGeneratorOptions.java"><line nr="5" mi="0" ci="2" mb="0" cb="0"/><line nr="9" mi="0" ci="3" mb="0" cb="0"/><line nr="15" mi="0" ci="4" mb="0" cb="0"/><line nr="19" mi="0" ci="3" mb="0" cb="0"/><line nr="23" mi="0" ci="3" mb="0" cb="0"/><line nr="27" mi="0" ci="3" mb="0" cb="0"/><line nr="31" mi="0" ci="3" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="21"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="5"/><counter type="METHOD" missed="0" covered="5"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="3" covered="143"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="1" covered="33"/><counter type="COMPLEXITY" missed="1" covered="12"/><counter type="METHOD" missed="1" covered="11"/><counter type="CLASS" missed="0" covered="2"/></package><counter type="INSTRUCTION" missed="3" covered="143"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="1" covered="33"/><counter type="COMPLEXITY" missed="1" covered="12"/><counter type="METHOD" missed="1" covered="11"/><counter type="CLASS" missed="0" covered="2"/></report>
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><!DOCTYPE report PUBLIC "-//JACOCO//DTD Report 1.1//EN" "report.dtd"><report name="JaCoCo Coverage Report"><sessioninfo id="Joaos-MacBook-Pro.local-534b7cb2" start="1643813476137" dump="1643813478375"/><package name="com/jesperancinha/test/objects/bufferedreader"><class name="com/jesperancinha/test/objects/bufferedreader/NanoStabilityChecker" sourcefilename="NanoStabilityChecker.java"><method name="&lt;init&gt;" desc="()V" line="18"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="printElementTo" desc="(Ljava/lang/String;Ljava/io/PrintStream;)J" line="23"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getStats" desc="(ILjava/lang/String;Lcom/jesperancinha/test/objects/bufferedreader/NanoStabilityChecker;)Lcom/jesperancinha/test/objects/bufferedreader/Stats;" line="35"><counter type="INSTRUCTION" missed="0" covered="98"/><counter type="LINE" missed="0" covered="15"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$getStats$0" desc="(Lcom/jesperancinha/test/objects/bufferedreader/NanoStabilityChecker;Ljava/lang/String;I)I" line="36"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="20"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="120"/><counter type="LINE" missed="0" covered="20"/><counter type="COMPLEXITY" missed="0" covered="5"/><counter type="METHOD" missed="0" covered="5"/><counter type="CLASS" missed="0" covered="1"/></class><class name="com/jesperancinha/test/objects/bufferedreader/BufferedReaderByComma" sourcefilename="BufferedReaderByComma.java"><method name="&lt;init&gt;" desc="()V" line="3"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="com/jesperancinha/test/objects/bufferedreader/Stats" sourcefilename="Stats.java"><method name="&lt;init&gt;" desc="()V" line="3"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getAverage" desc="()J" line="11"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getMax" desc="()J" line="15"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getMin" desc="()J" line="19"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setAverage" desc="(J)V" line="23"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setMax" desc="(J)V" line="27"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setMin" desc="(J)V" line="31"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="3" covered="21"/><counter type="LINE" missed="1" covered="9"/><counter type="COMPLEXITY" missed="1" covered="6"/><counter type="METHOD" missed="1" covered="6"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="Stats.java"><line nr="3" mi="0" ci="3" mb="0" cb="0"/><line nr="11" mi="3" ci="0" mb="0" cb="0"/><line nr="15" mi="0" ci="3" mb="0" cb="0"/><line nr="19" mi="0" ci="3" mb="0" cb="0"/><line nr="23" mi="0" ci="3" mb="0" cb="0"/><line nr="24" mi="0" ci="1" mb="0" cb="0"/><line nr="27" mi="0" ci="3" mb="0" cb="0"/><line nr="28" mi="0" ci="1" mb="0" cb="0"/><line nr="31" mi="0" ci="3" mb="0" cb="0"/><line nr="32" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="3" covered="21"/><counter type="LINE" missed="1" covered="9"/><counter type="COMPLEXITY" missed="1" covered="6"/><counter type="METHOD" missed="1" covered="6"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="NanoStabilityChecker.java"><line nr="18" mi="0" ci="3" mb="0" cb="0"/><line nr="20" mi="0" ci="4" mb="0" cb="0"/><line nr="23" mi="0" ci="2" mb="0" cb="0"/><line nr="24" mi="0" ci="3" mb="0" cb="0"/><line nr="25" mi="0" ci="4" mb="0" cb="0"/><line nr="35" mi="0" ci="6" mb="0" cb="0"/><line nr="36" mi="0" ci="11" mb="0" cb="0"/><line nr="37" mi="0" ci="1" mb="0" cb="0"/><line nr="38" mi="0" ci="11" mb="0" cb="0"/><line nr="39" mi="0" ci="11" mb="0" cb="0"/><line nr="40" mi="0" ci="11" mb="0" cb="0"/><line nr="41" mi="0" ci="4" mb="0" cb="0"/><line nr="42" mi="0" ci="5" mb="0" cb="0"/><line nr="43" mi="0" ci="11" mb="0" cb="0"/><line nr="44" mi="0" ci="11" mb="0" cb="0"/><line nr="45" mi="0" ci="11" mb="0" cb="0"/><line nr="46" mi="0" ci="3" mb="0" cb="0"/><line nr="47" mi="0" ci="3" mb="0" cb="0"/><line nr="48" mi="0" ci="3" mb="0" cb="0"/><line nr="49" mi="0" ci="2" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="120"/><counter type="LINE" missed="0" covered="20"/><counter type="COMPLEXITY" missed="0" covered="5"/><counter type="METHOD" missed="0" covered="5"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="BufferedReaderByComma.java"><line nr="3" mi="3" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><counter type="INSTRUCTION" missed="6" covered="141"/><counter type="LINE" missed="2" covered="29"/><counter type="COMPLEXITY" missed="2" covered="11"/><counter type="METHOD" missed="2" covered="11"/><counter type="CLASS" missed="1" covered="2"/></package><counter type="INSTRUCTION" missed="6" covered="141"/><counter type="LINE" missed="2" covered="29"/><counter type="COMPLEXITY" missed="2" covered="11"/><counter type="METHOD" missed="2" covered="11"/><counter type="CLASS" missed="1" covered="2"/></report>

0 commit comments

Comments
 (0)