-
Notifications
You must be signed in to change notification settings - Fork 47
/
MultiProjectTests.kt
121 lines (109 loc) · 5.2 KB
/
MultiProjectTests.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package kotlinx.kover.test.functional.cases
import kotlinx.kover.api.*
import kotlinx.kover.test.functional.cases.utils.*
import kotlinx.kover.test.functional.cases.utils.defaultXmlReport
import kotlinx.kover.test.functional.core.BaseGradleScriptTest
import kotlinx.kover.test.functional.core.ProjectType
import kotlin.test.*
internal class MultiProjectTests : BaseGradleScriptTest() {
private val subprojectName = "common"
@Test
fun testMergedReports() {
builder("Testing the generation of merged reports")
.types(ProjectType.KOTLIN_JVM, ProjectType.KOTLIN_MULTIPLATFORM)
.engines(CoverageEngine.INTELLIJ, CoverageEngine.JACOCO)
.sources("multiproject-user")
.subproject(subprojectName) {
sources("multiproject-common")
}
.build()
.run("build") {
xml(defaultXmlReport()) {
assertCounterFullyCovered(classCounter("org.jetbrains.CommonClass"))
assertCounterFullyCovered(classCounter("org.jetbrains.CommonInternalClass"))
assertCounterFullyCovered(classCounter("org.jetbrains.UserClass"))
}
}
}
@Test
fun testIsolatedProjectsReports() {
builder("Testing the generation of project reports with running tests only for this project")
.types(ProjectType.KOTLIN_JVM, ProjectType.KOTLIN_MULTIPLATFORM)
.engines(CoverageEngine.INTELLIJ, CoverageEngine.JACOCO)
.sources("multiproject-user")
.subproject(subprojectName) {
sources("multiproject-common")
}
.build()
.run("koverReport") {
xml(defaultXmlProjectReport()) {
assertCounterAbsent(classCounter("org.jetbrains.CommonClass"))
assertCounterAbsent(classCounter("org.jetbrains.CommonInternalClass"))
assertCounterFullyCovered(classCounter("org.jetbrains.UserClass"))
}
subproject(subprojectName) {
xml(defaultXmlProjectReport()) {
assertCounterAbsent(classCounter("org.jetbrains.UserClass"))
// common class covered partially because calls from the root project are not counted
assertCounterCovered(classCounter("org.jetbrains.CommonClass"))
assertCounterCovered(classCounter("org.jetbrains.CommonInternalClass"))
}
}
}
}
@Test
fun testLinkedProjectsReports() {
builder("Testing the generation of project reports with running all tests for all projects")
.types(ProjectType.KOTLIN_JVM, ProjectType.KOTLIN_MULTIPLATFORM)
.engines(CoverageEngine.INTELLIJ, CoverageEngine.JACOCO)
.configKover { runAllTestsForProjectTask = true }
.sources("multiproject-user")
.subproject(subprojectName) {
sources("multiproject-common")
}
.build()
.run("koverReport") {
xml(defaultXmlProjectReport()) {
assertCounterAbsent(classCounter("org.jetbrains.CommonClass"))
assertCounterAbsent(classCounter("org.jetbrains.CommonInternalClass"))
assertCounterFullyCovered(classCounter("org.jetbrains.UserClass"))
}
subproject(subprojectName) {
xml(defaultXmlProjectReport()) {
assertCounterAbsent(classCounter("org.jetbrains.UserClass"))
// common class fully covered because calls from the root project are counted too
assertCounterFullyCovered(classCounter("org.jetbrains.CommonClass"))
assertCounterFullyCovered(classCounter("org.jetbrains.CommonInternalClass"))
}
}
}
}
@Test
fun testDisableSubproject() {
builder("Testing disabling tests of subproject")
.types(ProjectType.KOTLIN_JVM, ProjectType.KOTLIN_MULTIPLATFORM)
.engines(CoverageEngine.INTELLIJ, CoverageEngine.JACOCO)
.sources("multiproject-user")
.subproject(subprojectName) {
sources("multiproject-common")
}
.configKover { disabledProjects += subprojectName }
.build()
.run("build", "koverReport") {
checkDefaultBinaryReport()
checkDefaultReports()
checkDefaultProjectReports()
xml(defaultXmlReport()) {
assertCounterFullyCovered(classCounter("org.jetbrains.UserClass"))
// classes from disabled project should not be included in the merged report
assertCounterAbsent(classCounter("org.jetbrains.CommonClass"))
assertCounterAbsent(classCounter("org.jetbrains.CommonInternalClass"))
}
subproject(subprojectName) {
checkDefaultBinaryReport(false)
checkDefaultReports(false)
checkDefaultProjectReports(false)
}
}
}
}