Skip to content

Commit e11b331

Browse files
committed
Remove the "testScoverage" task and make "test" run the coverage (by adding the instrumented classes to its classpath)
1 parent 22be0bd commit e11b331

File tree

3 files changed

+75
-101
lines changed

3 files changed

+75
-101
lines changed

src/functionalTest/java/org.scoverage/ScalaMultiModuleTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ public void checkAndAggregateScoverage() throws Exception {
116116
public void checkScoverageWithoutCoverageInRoot() throws Exception {
117117

118118
AssertableBuildResult result = runAndFail("clean", ScoveragePlugin.getCHECK_NAME(),
119-
ScoveragePlugin.getTEST_NAME(),
119+
"test",
120120
"--tests", "org.hello.TestNothingSuite",
121121
"--tests", "org.hello.a.WorldASuite",
122122
"--tests", "org.hello.b.WorldBSuite");
@@ -131,7 +131,7 @@ public void checkScoverageWithoutCoverageInRoot() throws Exception {
131131
public void checkScoverageWithoutCoverageInA() throws Exception {
132132

133133
AssertableBuildResult result = runAndFail("clean", ScoveragePlugin.getCHECK_NAME(),
134-
ScoveragePlugin.getTEST_NAME(),
134+
"test",
135135
"--tests", "org.hello.a.TestNothingASuite",
136136
"--tests", "org.hello.WorldSuite",
137137
"--tests", "org.hello.b.WorldBSuite");
@@ -148,7 +148,7 @@ public void checkAndAggregateScoverageWithoutCoverageInRoot() throws Exception {
148148
// should pass as the check on the root is for the aggregation (which covers > 50%)
149149

150150
AssertableBuildResult result = run("clean", ScoveragePlugin.getCHECK_NAME(),
151-
ScoveragePlugin.getAGGREGATE_NAME(), ScoveragePlugin.getTEST_NAME(),
151+
ScoveragePlugin.getAGGREGATE_NAME(), "test",
152152
"--tests", "org.hello.TestNothingSuite",
153153
"--tests", "org.hello.a.WorldASuite",
154154
"--tests", "org.hello.b.WorldBSuite");
@@ -169,7 +169,7 @@ public void checkAndAggregateScoverageWithoutCoverageInRoot() throws Exception {
169169
public void checkAndAggregateScoverageWithoutCoverageInAll() throws Exception {
170170

171171
AssertableBuildResult result = runAndFail("clean", ScoveragePlugin.getCHECK_NAME(),
172-
ScoveragePlugin.getAGGREGATE_NAME(), ScoveragePlugin.getTEST_NAME(),
172+
ScoveragePlugin.getAGGREGATE_NAME(), "test",
173173
"--tests", "org.hello.TestNothingSuite",
174174
"--tests", "org.hello.a.TestNothingASuite",
175175
"--tests", "org.hello.b.TestNothingBSuite");

src/functionalTest/java/org.scoverage/ScalaSingleModuleTest.java

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ public void test() {
1515
AssertableBuildResult result = dryRun("clean", "test");
1616

1717
result.assertTaskDoesntExist(ScoveragePlugin.getCOMPILE_NAME());
18-
result.assertTaskDoesntExist(ScoveragePlugin.getTEST_NAME());
1918
result.assertTaskDoesntExist(ScoveragePlugin.getREPORT_NAME());
2019
result.assertTaskDoesntExist(ScoveragePlugin.getAGGREGATE_NAME());
2120
result.assertTaskDoesntExist(ScoveragePlugin.getCHECK_NAME());
@@ -27,19 +26,6 @@ public void build() {
2726
AssertableBuildResult result = dryRun("clean", "build");
2827

2928
result.assertTaskDoesntExist(ScoveragePlugin.getCOMPILE_NAME());
30-
result.assertTaskDoesntExist(ScoveragePlugin.getTEST_NAME());
31-
result.assertTaskDoesntExist(ScoveragePlugin.getREPORT_NAME());
32-
result.assertTaskDoesntExist(ScoveragePlugin.getAGGREGATE_NAME());
33-
result.assertTaskDoesntExist(ScoveragePlugin.getCHECK_NAME());
34-
}
35-
36-
@Test
37-
public void testScoverage() {
38-
39-
AssertableBuildResult result = dryRun("clean", ScoveragePlugin.getTEST_NAME());
40-
41-
result.assertTaskExists(ScoveragePlugin.getCOMPILE_NAME());
42-
result.assertTaskExists(ScoveragePlugin.getTEST_NAME());
4329
result.assertTaskDoesntExist(ScoveragePlugin.getREPORT_NAME());
4430
result.assertTaskDoesntExist(ScoveragePlugin.getAGGREGATE_NAME());
4531
result.assertTaskDoesntExist(ScoveragePlugin.getCHECK_NAME());
@@ -51,7 +37,6 @@ public void reportScoverage() {
5137
AssertableBuildResult result = dryRun("clean", ScoveragePlugin.getREPORT_NAME());
5238

5339
result.assertTaskExists(ScoveragePlugin.getCOMPILE_NAME());
54-
result.assertTaskExists(ScoveragePlugin.getTEST_NAME());
5540
result.assertTaskExists(ScoveragePlugin.getREPORT_NAME());
5641
result.assertTaskDoesntExist(ScoveragePlugin.getAGGREGATE_NAME());
5742
result.assertTaskDoesntExist(ScoveragePlugin.getCHECK_NAME());
@@ -71,7 +56,6 @@ public void checkScoverage() throws Exception {
7156
AssertableBuildResult result = run("clean", ScoveragePlugin.getCHECK_NAME());
7257

7358
result.assertTaskSucceeded(ScoveragePlugin.getCOMPILE_NAME());
74-
result.assertTaskSucceeded(ScoveragePlugin.getTEST_NAME());
7559
result.assertTaskSucceeded(ScoveragePlugin.getREPORT_NAME());
7660
result.assertTaskSucceeded(ScoveragePlugin.getCHECK_NAME());
7761
result.assertTaskDoesntExist(ScoveragePlugin.getAGGREGATE_NAME());
@@ -84,10 +68,9 @@ public void checkScoverage() throws Exception {
8468
public void checkScoverageFails() throws Exception {
8569

8670
AssertableBuildResult result = runAndFail("clean", ScoveragePlugin.getCHECK_NAME(),
87-
ScoveragePlugin.getTEST_NAME(), "--tests", "org.hello.TestNothingSuite");
71+
"test", "--tests", "org.hello.TestNothingSuite");
8872

8973
result.assertTaskSucceeded(ScoveragePlugin.getCOMPILE_NAME());
90-
result.assertTaskSucceeded(ScoveragePlugin.getTEST_NAME());
9174
result.assertTaskSucceeded(ScoveragePlugin.getREPORT_NAME());
9275
result.assertTaskFailed(ScoveragePlugin.getCHECK_NAME());
9376
result.assertTaskDoesntExist(ScoveragePlugin.getAGGREGATE_NAME());
Lines changed: 70 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,16 @@
11
package org.scoverage
22

3-
43
import org.gradle.api.Plugin
54
import org.gradle.api.Project
65
import org.gradle.api.invocation.Gradle
76
import org.gradle.api.plugins.PluginAware
87
import org.gradle.api.tasks.SourceSet
98
import org.gradle.api.tasks.bundling.Jar
10-
import org.gradle.api.tasks.testing.Test
119
import org.gradle.util.GFileUtils
1210

13-
import java.util.concurrent.Callable
14-
1511
class ScoveragePlugin implements Plugin<PluginAware> {
1612

1713
static final String CONFIGURATION_NAME = 'scoverage'
18-
static final String TEST_NAME = 'testScoverage'
1914
static final String REPORT_NAME = 'reportScoverage'
2015
static final String CHECK_NAME = 'checkScoverage'
2116
static final String COMPILE_NAME = 'compileScoverageScala'
@@ -80,17 +75,12 @@ class ScoveragePlugin implements Plugin<PluginAware> {
8075
}
8176
}
8277

83-
ScoverageRunner scoverageRunner = new ScoverageRunner(project.configurations.scoverage)
84-
85-
createTasks(project, extension, scoverageRunner)
86-
87-
project.afterEvaluate {
88-
configureAfterEvaluation(project, extension, scoverageRunner)
89-
}
78+
createTasks(project, extension)
9079
}
9180

92-
private void createTasks(Project project, ScoverageExtension extension, ScoverageRunner scoverageRunner) {
81+
private void createTasks(Project project, ScoverageExtension extension) {
9382

83+
ScoverageRunner scoverageRunner = new ScoverageRunner(project.configurations.scoverage)
9484

9585
def instrumentedSourceSet = project.sourceSets.create('scoverage') {
9686
def original = project.sourceSets.getByName(SourceSet.MAIN_SOURCE_SET_NAME)
@@ -103,38 +93,20 @@ class ScoveragePlugin implements Plugin<PluginAware> {
10393
runtimeClasspath = it.output + project.configurations.scoverage + original.runtimeClasspath
10494
}
10595

96+
def compileTask = project.tasks[instrumentedSourceSet.getCompileTaskName("scala")]
97+
project.test.mustRunAfter(compileTask)
98+
10699
def scoverageJar = project.tasks.create('jarScoverage', Jar.class) {
107-
dependsOn('scoverageClasses')
100+
dependsOn(instrumentedSourceSet.classesTaskName)
108101
classifier = CONFIGURATION_NAME
109102
from instrumentedSourceSet.output
110103
}
111104
project.artifacts {
112105
scoverage scoverageJar
113106
}
114107

115-
project.tasks.create(TEST_NAME, Test.class) {
116-
conventionMapping.map("classpath", new Callable<Object>() {
117-
Object call() throws Exception {
118-
def testSourceSet = project.sourceSets.getByName(SourceSet.TEST_SOURCE_SET_NAME)
119-
return testSourceSet.output +
120-
instrumentedSourceSet.output +
121-
project.configurations.scoverage +
122-
testSourceSet.runtimeClasspath
123-
}
124-
})
125-
group = 'verification'
126-
127-
FilenameFilter measurementFile = new FilenameFilter() {
128-
@Override
129-
boolean accept(File dir, String name) {
130-
return name.startsWith("scoverage.measurements.")
131-
}
132-
}
133-
outputs.upToDateWhen { extension.dataDir.get().listFiles(measurementFile) }
134-
}
135-
136-
project.tasks.create(REPORT_NAME, ScoverageReport.class) {
137-
dependsOn(project.tasks[TEST_NAME])
108+
def reportTask = project.tasks.create(REPORT_NAME, ScoverageReport.class) {
109+
dependsOn compileTask, project.test
138110
onlyIf { extension.dataDir.get().list() }
139111
group = 'verification'
140112
runner = scoverageRunner
@@ -148,58 +120,77 @@ class ScoveragePlugin implements Plugin<PluginAware> {
148120
}
149121

150122
project.tasks.create(CHECK_NAME, OverallCheckTask.class) {
151-
dependsOn(project.tasks[REPORT_NAME])
123+
dependsOn(reportTask)
152124
group = 'verification'
153125
reportDir = extension.reportDir
154126
}
155127

156-
}
128+
project.gradle.taskGraph.whenReady { graph ->
129+
if (graph.hasTask(reportTask)) {
157130

158-
private void configureAfterEvaluation(Project project, ScoverageExtension extension, ScoverageRunner scoverageRunner) {
159-
160-
if (project.childProjects.size() > 0) {
161-
def reportTasks = project.getAllprojects().collect { it.tasks.withType(ScoverageReport) }
162-
def aggregationTask = project.tasks.create(AGGREGATE_NAME, ScoverageAggregate.class) {
163-
dependsOn(reportTasks)
164-
group = 'verification'
165-
runner = scoverageRunner
166-
reportDir = extension.reportDir
167-
deleteReportsOnAggregation = extension.deleteReportsOnAggregation
168-
coverageOutputCobertura = extension.coverageOutputCobertura
169-
coverageOutputXML = extension.coverageOutputXML
170-
coverageOutputHTML = extension.coverageOutputHTML
171-
coverageDebug = extension.coverageDebug
131+
project.test.configure {
132+
project.logger.debug("Adding instrumented classes to '${path}' classpath")
133+
134+
classpath = project.configurations.scoverage + instrumentedSourceSet.output + classpath
135+
136+
outputs.upToDateWhen {
137+
extension.dataDir.get().listFiles(new FilenameFilter() {
138+
@Override
139+
boolean accept(File dir, String name) {
140+
return name.startsWith("scoverage.measurements.")
141+
}
142+
})
143+
}
144+
}
172145
}
173-
project.tasks[CHECK_NAME].mustRunAfter(aggregationTask)
174146
}
175147

176-
project.tasks[COMPILE_NAME].configure {
177-
File pluginFile = project.configurations[CONFIGURATION_NAME].find {
178-
it.name.startsWith("scalac-scoverage-plugin")
179-
}
180-
List<String> parameters = ['-Xplugin:' + pluginFile.absolutePath]
181-
List<String> existingParameters = scalaCompileOptions.additionalParameters
182-
if (existingParameters) {
183-
parameters.addAll(existingParameters)
184-
}
185-
parameters.add("-P:scoverage:dataDir:${extension.dataDir.get().absolutePath}".toString())
186-
if (extension.excludedPackages.get()) {
187-
def packages = extension.excludedPackages.get().join(';')
188-
parameters.add("-P:scoverage:excludedPackages:$packages".toString())
189-
}
190-
if (extension.excludedFiles.get()) {
191-
def packages = extension.excludedFiles.get().join(';')
192-
parameters.add("-P:scoverage:excludedFiles:$packages".toString())
193-
}
194-
if (extension.highlighting.get()) {
195-
parameters.add('-Yrangepos')
148+
project.afterEvaluate {
149+
150+
if (project.childProjects.size() > 0) {
151+
def reportTasks = project.getAllprojects().collect { it.tasks.withType(ScoverageReport) }
152+
def aggregationTask = project.tasks.create(AGGREGATE_NAME, ScoverageAggregate.class) {
153+
dependsOn(reportTasks)
154+
group = 'verification'
155+
runner = scoverageRunner
156+
reportDir = extension.reportDir
157+
deleteReportsOnAggregation = extension.deleteReportsOnAggregation
158+
coverageOutputCobertura = extension.coverageOutputCobertura
159+
coverageOutputXML = extension.coverageOutputXML
160+
coverageOutputHTML = extension.coverageOutputHTML
161+
coverageDebug = extension.coverageDebug
162+
}
163+
project.tasks[CHECK_NAME].mustRunAfter(aggregationTask)
196164
}
197-
doFirst {
198-
GFileUtils.deleteDirectory(destinationDir)
165+
166+
compileTask.configure {
167+
File pluginFile = project.configurations[CONFIGURATION_NAME].find {
168+
it.name.startsWith("scalac-scoverage-plugin")
169+
}
170+
List<String> parameters = ['-Xplugin:' + pluginFile.absolutePath]
171+
List<String> existingParameters = scalaCompileOptions.additionalParameters
172+
if (existingParameters) {
173+
parameters.addAll(existingParameters)
174+
}
175+
parameters.add("-P:scoverage:dataDir:${extension.dataDir.get().absolutePath}".toString())
176+
if (extension.excludedPackages.get()) {
177+
def packages = extension.excludedPackages.get().join(';')
178+
parameters.add("-P:scoverage:excludedPackages:$packages".toString())
179+
}
180+
if (extension.excludedFiles.get()) {
181+
def packages = extension.excludedFiles.get().join(';')
182+
parameters.add("-P:scoverage:excludedFiles:$packages".toString())
183+
}
184+
if (extension.highlighting.get()) {
185+
parameters.add('-Yrangepos')
186+
}
187+
doFirst {
188+
GFileUtils.deleteDirectory(destinationDir)
189+
}
190+
scalaCompileOptions.additionalParameters = parameters
191+
// the compile task creates a store of measured statements
192+
outputs.file(new File(extension.dataDir.get(), 'scoverage.coverage.xml'))
199193
}
200-
scalaCompileOptions.additionalParameters = parameters
201-
// the compile task creates a store of measured statements
202-
outputs.file(new File(extension.dataDir.get(), 'scoverage.coverage.xml'))
203194
}
204195
}
205196
}

0 commit comments

Comments
 (0)