Skip to content

Commit 43732c1

Browse files
committed
Add support for -coverage-exclude-classlikes and -coverage-exclude-files for Scala 3
1 parent b276e62 commit 43732c1

File tree

8 files changed

+112
-17
lines changed

8 files changed

+112
-17
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ public void reportScoverageWithoutNormalCompilationAndWithExcludedClasses() thro
135135
Assert.assertFalse(resolve(buildDir(), "classes/scala/scoverage/org/hello/World.class").exists());
136136
}
137137

138-
private void assertReportFilesExist() {
138+
protected void assertReportFilesExist() {
139139

140140
Assert.assertTrue(resolve(reportDir(), "index.html").exists());
141141
Assert.assertTrue(resolve(reportDir(), "org/hello/World.scala.html").exists());
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package org.scoverage;
2+
3+
import org.junit.Assert;
4+
5+
import java.util.List;
6+
7+
public class ScalaSingleModuleTestScala3 extends ScalaSingleModuleTest {
8+
9+
@Override
10+
protected List<String> getVersionAgruments() {
11+
return ScalaVersionArguments.version3;
12+
}
13+
14+
@Override
15+
public void checkScoverage() throws Exception {
16+
AssertableBuildResult result = run("clean", ScoveragePlugin.getCHECK_NAME());
17+
18+
result.assertTaskSucceeded(ScoveragePlugin.getCOMPILE_NAME());
19+
result.assertTaskSucceeded(ScoveragePlugin.getREPORT_NAME());
20+
result.assertTaskSucceeded(ScoveragePlugin.getCHECK_NAME());
21+
result.assertTaskDoesntExist(ScoveragePlugin.getAGGREGATE_NAME());
22+
23+
assertReportFilesExist();
24+
assertCoverage(66.67);
25+
}
26+
27+
@Override
28+
public void reportScoverageWithExcludedClasses() throws Exception {
29+
AssertableBuildResult result = run("clean", ScoveragePlugin.getREPORT_NAME(),
30+
"-PexcludedFile=.*");
31+
32+
result.assertTaskSucceeded(ScoveragePlugin.getCOMPILE_NAME());
33+
result.assertTaskSucceeded(ScoveragePlugin.getREPORT_NAME());
34+
result.assertTaskDoesntExist(ScoveragePlugin.getCHECK_NAME());
35+
result.assertTaskDoesntExist(ScoveragePlugin.getAGGREGATE_NAME());
36+
37+
Assert.assertTrue(resolve(reportDir(), "index.html").exists());
38+
Assert.assertFalse(resolve(reportDir(), "org/hello/World.scala.html").exists());
39+
assertCoverage(100.0); // coverage is 100 since no classes are covered
40+
41+
// compiled class should exist in the default classes directory, but not in scoverage
42+
Assert.assertTrue(resolve(buildDir(), "classes/scala/main/org/hello/World.class").exists());
43+
}
44+
45+
@Override
46+
public void reportScoverageWithoutNormalCompilationAndWithExcludedClasses() throws Exception {
47+
AssertableBuildResult result = run("clean", ScoveragePlugin.getREPORT_NAME(),
48+
"-PexcludedFile=.*", "-P" + ScoveragePlugin.getSCOVERAGE_COMPILE_ONLY_PROPERTY());
49+
50+
Assert.assertTrue(resolve(reportDir(), "index.html").exists());
51+
Assert.assertFalse(resolve(reportDir(), "org/hello/World.scala.html").exists());
52+
assertCoverage(100.0); // coverage is 100 since no classes are covered
53+
54+
// compiled class should exist in the default classes directory, but not in scoverage
55+
Assert.assertTrue(resolve(buildDir(), "classes/scala/main/org/hello/World.class").exists());
56+
}
57+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package org.scoverage;
2+
3+
import java.util.Arrays;
4+
import java.util.List;
5+
6+
public interface ScalaVersionArguments {
7+
List<String> version2 = Arrays.asList(
8+
"-PscalaVersionMajor=2",
9+
"-PscalaVersionMinor=13",
10+
"-PscalaVersionBuild=14",
11+
"-PjunitVersion=5.3.2",
12+
"-PjunitPlatformVersion=1.3.2",
13+
"-PscalatestVersion=3.2.16"
14+
);
15+
16+
List<String> version3 = Arrays.asList(
17+
"-PscalaVersionMajor=3",
18+
"-PscalaVersionMinor=4",
19+
"-PscalaVersionBuild=2",
20+
"-PjunitVersion=5.3.2",
21+
"-PjunitPlatformVersion=1.3.2",
22+
"-PscalatestVersion=3.2.16"
23+
);
24+
}

src/functionalTest/java/org/scoverage/ScoverageFunctionalTest.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -115,16 +115,14 @@ private Double coverage(File reportDir, CoverageType coverageType) throws IOExce
115115
return coverageType.normalize(rawValue) * 100.0;
116116
}
117117

118+
protected List<String> getVersionAgruments() {
119+
return ScalaVersionArguments.version2;
120+
}
121+
118122
private void configureArguments(String... arguments) {
119123

120-
List<String> fullArguments = new ArrayList<>();
124+
List<String> fullArguments = new ArrayList<>(getVersionAgruments());
121125

122-
fullArguments.add("-PscalaVersionMajor=2");
123-
fullArguments.add("-PscalaVersionMinor=13");
124-
fullArguments.add("-PscalaVersionBuild=14");
125-
fullArguments.add("-PjunitVersion=5.3.2");
126-
fullArguments.add("-PjunitPlatformVersion=1.3.2");
127-
fullArguments.add("-PscalatestVersion=3.0.8");
128126
if (Boolean.parseBoolean(System.getProperty("failOnWarning"))) {
129127
fullArguments.add("--warning-mode=fail");
130128
} else {

src/functionalTest/resources/projects/scala-single-module/build.gradle

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,20 @@ apply plugin: 'java'
1212
apply plugin: 'scala'
1313

1414
dependencies {
15-
implementation group: 'org.scala-lang', name: 'scala-library', version: "${scalaVersionMajor}.${scalaVersionMinor}.${scalaVersionBuild}"
15+
if (project.getProperties().get("scalaVersionMajor").equals("2")) {
16+
implementation group: 'org.scala-lang', name: 'scala-library', version: "${scalaVersionMajor}.${scalaVersionMinor}.${scalaVersionBuild}"
17+
18+
testImplementation group: 'org.scalatest', name: 'scalatest_2.13', version: scalatestVersion
19+
testImplementation group: 'org.scalatestplus', name: 'junit-4-13_2.13', version: "${scalatestVersion}.0"
20+
} else {
21+
implementation group: 'org.scala-lang', name: 'scala3-library_3', version: "${scalaVersionMajor}.${scalaVersionMinor}.${scalaVersionBuild}"
22+
23+
testImplementation group: 'org.scalatest', name: 'scalatest_3', version: scalatestVersion
24+
testImplementation group: 'org.scalatestplus', name: 'junit-4-13_3', version: "${scalatestVersion}.0"
25+
}
1626

1727
testRuntimeOnly group: 'org.junit.vintage', name: 'junit-vintage-engine', version: junitVersion
1828
testImplementation group: 'org.junit.platform', name: 'junit-platform-runner', version: junitPlatformVersion
19-
20-
testImplementation group: 'org.scalatest', name: "scalatest_${scalaVersionMajor}.${scalaVersionMinor}", version: scalatestVersion
2129
}
2230

2331
test {

src/functionalTest/resources/projects/scala-single-module/src/test/scala/org/hello/TestNothingSuite.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package org.hello
22

33
import org.junit.runner.RunWith
4-
import org.scalatest.FunSuite
5-
import org.scalatest.junit.JUnitRunner
4+
import org.scalatest.funsuite._
5+
import org.scalatestplus.junit.JUnitRunner
66

77
@RunWith(classOf[JUnitRunner])
8-
class TestNothingSuite extends FunSuite {
8+
class TestNothingSuite extends AnyFunSuite {
99

1010
test("nothing") {
1111
}

src/functionalTest/resources/projects/scala-single-module/src/test/scala/org/hello/WorldSuite.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package org.hello
22

33
import org.junit.runner.RunWith
4-
import org.scalatest.FunSuite
5-
import org.scalatest.junit.JUnitRunner
4+
import org.scalatest.funsuite._
5+
import org.scalatestplus.junit.JUnitRunner
66

77
@RunWith(classOf[JUnitRunner])
8-
class WorldSuite extends FunSuite {
8+
class WorldSuite extends AnyFunSuite {
99

1010
test("foo") {
1111
new World().foo()

src/main/groovy/org/scoverage/ScoveragePlugin.groovy

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,14 @@ class ScoveragePlugin implements Plugin<PluginAware> {
206206
} else {
207207
parameters.add("-sourceroot:${project.rootDir.absolutePath}".toString())
208208
parameters.add("-coverage-out:${extension.dataDir.get().absolutePath}".toString())
209+
if (extension.excludedPackages.get()) {
210+
def packages = extension.excludedPackages.get().join(',')
211+
parameters.add("-coverage-exclude-classlikes:$packages".toString())
212+
}
213+
if (extension.excludedFiles.get()) {
214+
def packages = extension.excludedFiles.get().join(';')
215+
parameters.add("-coverage-exclude-files:$packages".toString())
216+
}
209217
scalaCompileOptions.additionalParameters = parameters
210218
}
211219
}

0 commit comments

Comments
 (0)