/
EngineManager.kt
82 lines (73 loc) · 2.79 KB
/
EngineManager.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
/*
* Copyright 2017-2022 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
*/
package kotlinx.kover.engines.commons
import kotlinx.kover.api.*
import kotlinx.kover.engines.intellij.*
import kotlinx.kover.engines.jacoco.*
import kotlinx.kover.tasks.*
import org.gradle.api.*
import org.gradle.api.artifacts.Configuration
import org.gradle.api.file.*
import org.gradle.process.*
import java.io.*
@Suppress("UNUSED_PARAMETER")
internal object EngineManager {
fun buildAgentArgs(
details: EngineDetails,
task: Task,
reportFile: File,
filters: AgentFilters
): MutableList<String> {
return if (details.variant.vendor == CoverageEngineVendor.INTELLIJ) {
task.buildIntellijAgentJvmArgs(details.jarFile, reportFile, filters)
} else {
reportFile.parentFile.mkdirs()
task.buildJacocoAgentJvmArgs(details.jarFile, reportFile, filters)
}
}
fun report(
details: EngineDetails,
task: Task,
exec: ExecOperations,
projectFiles: Map<String, ProjectFiles>,
classFilter: KoverClassFilter,
xmlFile: File?,
htmlDir: File?
) {
if (details.variant.vendor == CoverageEngineVendor.INTELLIJ) {
task.intellijReport(exec, projectFiles, classFilter, xmlFile, htmlDir, details.classpath)
} else {
task.jacocoReport(projectFiles, classFilter, xmlFile, htmlDir, details.classpath)
}
}
fun verify(
details: EngineDetails,
task: Task,
exec: ExecOperations,
projectFiles: Map<String, ProjectFiles>,
classFilter: KoverClassFilter,
rules: List<ReportVerificationRule>,
): String? {
return if (details.variant.vendor == CoverageEngineVendor.INTELLIJ) {
task.intellijVerification(exec, projectFiles, classFilter, rules, details.classpath)
} else {
task.jacocoVerification(projectFiles, classFilter, rules, details.classpath)
}
}
fun findJarFile(variant: CoverageEngineVariant, config: Configuration, archiveOperations: ArchiveOperations): File {
return if (variant.vendor == CoverageEngineVendor.INTELLIJ) {
config.fileCollection { it.name == "intellij-coverage-agent" }.singleFile
} else {
val fatJar = config.fileCollection { it.name == "org.jacoco.agent" }.singleFile
archiveOperations.zipTree(fatJar).filter { it.name == "jacocoagent.jar" }.singleFile
}
}
fun dependencies(engineVariant: CoverageEngineVariant): List<String> {
return if (engineVariant.vendor == CoverageEngineVendor.INTELLIJ) {
getIntellijDependencies(engineVariant.version)
} else {
getJacocoDependencies(engineVariant.version)
}
}
}