Skip to content

Commit 16fc1c6

Browse files
committed
#171 Migrate ScoverageExtension from Groovy to Kotlin
1 parent 756a841 commit 16fc1c6

File tree

3 files changed

+88
-109
lines changed

3 files changed

+88
-109
lines changed

Diff for: src/main/groovy/org/scoverage/ScoverageExtension.groovy

-108
This file was deleted.

Diff for: src/main/groovy/org/scoverage/ScoveragePlugin.groovy

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class ScoveragePlugin implements Plugin<PluginAware> {
2727
static final String DEFAULT_SCALA_VERSION = '2.13.6'
2828
static final String SCOVERAGE_COMPILE_ONLY_PROPERTY = 'scoverageCompileOnly';
2929

30-
static final String DEFAULT_REPORT_DIR = 'reports' + File.separatorChar + 'scoverage'
30+
static final String DEFAULT_REPORT_DIR = ScoverageExtension.DEFAULT_REPORT_DIR
3131

3232
private final ConcurrentHashMap<Task, Set<? extends Task>> crossProjectTaskDependencies = new ConcurrentHashMap<>()
3333
private final ConcurrentHashMap<Task, Set<? extends Task>> sameProjectTaskDependencies = new ConcurrentHashMap<>()

Diff for: src/main/kotlin/org/scoverage/ScoverageExtension.kt

+87
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
package org.scoverage
2+
3+
import groovy.lang.Closure
4+
import org.gradle.api.Project
5+
import org.gradle.api.plugins.JavaPlugin
6+
import org.gradle.api.plugins.scala.ScalaPlugin
7+
import org.gradle.api.provider.ListProperty
8+
import org.gradle.api.provider.Property
9+
import java.io.File
10+
import java.math.BigDecimal
11+
12+
/**
13+
* Defines a new SourceSet for the code to be instrumented.
14+
* Defines a new Test Task which executes normal tests with the instrumented classes.
15+
* Defines a new Check Task which enforces an overall line coverage requirement.
16+
*/
17+
abstract class ScoverageExtension(val project: Project) {
18+
19+
companion object {
20+
@JvmField
21+
val DEFAULT_REPORT_DIR = "reports" + File.separatorChar + "scoverage"
22+
@JvmField
23+
val DEFAULT_COVERAGE_TYPE: CoverageType = CoverageType.Statement
24+
@JvmField
25+
val DEFAULT_MINIMUM_RATE: Double = 0.75
26+
}
27+
28+
/** Version of scoverage to use for the scalac plugin */
29+
val scoverageVersion: Property<String> = project.objects.property(String::class.java)
30+
31+
/** Version of scala to use for the scalac plugin */
32+
val scoverageScalaVersion: Property<String> = project.objects.property(String::class.java)
33+
34+
/** a directory to write working files to */
35+
val dataDir: Property<File> = project.objects.property(File::class.java)
36+
/** a directory to write final output to */
37+
val reportDir: Property<File> = project.objects.property(File::class.java)
38+
/** range positioning for highlighting */
39+
val highlighting: Property<Boolean> = project.objects.property(Boolean::class.java)
40+
/** regex for each excluded package */
41+
val excludedPackages: ListProperty<String> = project.objects.listProperty(String::class.java)
42+
/** regex for each excluded file */
43+
val excludedFiles: ListProperty<String> = project.objects.listProperty(String::class.java)
44+
45+
/** Options for enabling and disabling output */
46+
val coverageOutputCobertura: Property<Boolean> = project.objects.property(Boolean::class.java)
47+
val coverageOutputXML: Property<Boolean> = project.objects.property(Boolean::class.java)
48+
val coverageOutputHTML: Property<Boolean> = project.objects.property(Boolean::class.java)
49+
val coverageDebug: Property<Boolean> = project.objects.property(Boolean::class.java)
50+
51+
val deleteReportsOnAggregation: Property<Boolean> = project.objects.property(Boolean::class.java)
52+
53+
val checks: MutableList<CheckConfig> = mutableListOf()
54+
55+
val coverageType: Property<CoverageType> = project.objects.property(CoverageType::class.java)
56+
val minimumRate: Property<BigDecimal> = project.objects.property(BigDecimal::class.java)
57+
58+
init {
59+
project.plugins.apply(JavaPlugin::class.java)
60+
project.plugins.apply(ScalaPlugin::class.java)
61+
62+
scoverageVersion.set("1.4.8")
63+
64+
dataDir.set(File(project.buildDir, "scoverage"))
65+
reportDir.set(File(project.buildDir, DEFAULT_REPORT_DIR))
66+
67+
highlighting.set(true)
68+
69+
excludedPackages.set(listOf())
70+
excludedFiles.set(listOf())
71+
72+
coverageOutputCobertura.set(true)
73+
coverageOutputXML.set(true)
74+
coverageOutputHTML.set(true)
75+
coverageDebug.set(false)
76+
77+
deleteReportsOnAggregation.set(false)
78+
}
79+
80+
fun check(closure: Closure<*>) {
81+
val check = CheckConfig()
82+
project.configure(check, closure)
83+
checks.add(check)
84+
}
85+
86+
data class CheckConfig(var coverageType: CoverageType? = null, var minimumRate: BigDecimal? = null)
87+
}

0 commit comments

Comments
 (0)