diff --git a/README.md b/README.md
index 20d82f9..4e09b2c 100644
--- a/README.md
+++ b/README.md
@@ -35,6 +35,8 @@ You can find instructions on how to apply the plugin at http://plugins.gradle.or
`gradle checkScoverage` will automatically invoke `reportScoverage` but it won't generate aggregated reports.
In order to check coverage of aggregated reports one should use `gradle checkScoverage aggregateScoverage`.
+
+**Note:** The plugin is not compatible with composite builds. For more information, see [the relevant issue](https://github.com/scoverage/gradle-scoverage/issues/98).
### Configuration
diff --git a/build.gradle b/build.gradle
index 745d7dd..268de3e 100644
--- a/build.gradle
+++ b/build.gradle
@@ -44,6 +44,7 @@ apply plugin: 'groovy'
sourceCompatibility = '1.8'
targetCompatibility = '1.8'
+
dependencies {
compileOnly "org.scoverage:scalac-scoverage-plugin_2.12:1.4.1"
implementation group: 'commons-io', name: 'commons-io', version: '2.6'
@@ -58,39 +59,51 @@ dependencies {
sourceSets {
functionalTest {
java.srcDir file('src/functionalTest/java')
- resources.srcDir file('src/functionalTest/resources')
- compileClasspath += sourceSets.main.output + configurations.testRuntimeClasspath
- runtimeClasspath += output + compileClasspath
+ compileClasspath += sourceSets.main.output
+ runtimeClasspath += sourceSets.main.output
+ }
+ crossScalaVersionTest {
+ java.srcDir file('src/crossScalaVersionTest/java')
+ compileClasspath += sourceSets.main.output + sourceSets.functionalTest.output
+ runtimeClasspath += sourceSets.main.output + sourceSets.functionalTest.output
}
}
-task crossScalaVersionFunctionalTest(type: Test) {
+configurations {
+ functionalTestImplementation.extendsFrom testImplementation
+ functionalTestRuntimeOnly.extendsFrom testRuntimeOnly
+
+ crossScalaVersionTestImplementation.extendsFrom testImplementation
+ crossScalaVersionTestRuntimeOnly.extendsFrom testRuntimeOnly
+}
+
+task crossScalaVersionTest(type: Test) {
description = 'Runs the cross scala version functional test.'
group = 'verification'
- testClassesDirs = sourceSets.functionalTest.output.classesDirs
- classpath = sourceSets.functionalTest.runtimeClasspath
- include "**/ScalaMultiModuleCrossVersionTest.*"
+ testClassesDirs = sourceSets.crossScalaVersionTest.output
+ classpath = sourceSets.crossScalaVersionTest.runtimeClasspath
+ forkEvery = 1 // crucial to run every test in its own JVM
testLogging.showStandardStreams = true
mustRunAfter test
}
+check.dependsOn crossScalaVersionTest
task functionalTest(type: Test) {
description = 'Runs the functional tests.'
group = 'verification'
- testClassesDirs = sourceSets.functionalTest.output.classesDirs
+ testClassesDirs = sourceSets.functionalTest.output
classpath = sourceSets.functionalTest.runtimeClasspath
- exclude "**/ScalaMultiModuleCrossVersionTest.*"
testLogging.showStandardStreams = true
- dependsOn crossScalaVersionFunctionalTest
+ mustRunAfter crossScalaVersionTest
}
check.dependsOn functionalTest
gradlePlugin {
- testSourceSets sourceSets.functionalTest
+ testSourceSets sourceSets.functionalTest, sourceSets.crossScalaVersionTest
}
task groovydocJar(type: Jar, dependsOn: groovydoc) {
diff --git a/src/crossScalaVersionTest/java/org/scoverage/Scala211Test.java b/src/crossScalaVersionTest/java/org/scoverage/Scala211Test.java
new file mode 100644
index 0000000..ac06067
--- /dev/null
+++ b/src/crossScalaVersionTest/java/org/scoverage/Scala211Test.java
@@ -0,0 +1,7 @@
+package org.scoverage;
+
+public class Scala211Test extends ScalaVersionTest {
+ public Scala211Test() {
+ super("2_11");
+ }
+}
\ No newline at end of file
diff --git a/src/crossScalaVersionTest/java/org/scoverage/Scala212Test.java b/src/crossScalaVersionTest/java/org/scoverage/Scala212Test.java
new file mode 100644
index 0000000..2c538ae
--- /dev/null
+++ b/src/crossScalaVersionTest/java/org/scoverage/Scala212Test.java
@@ -0,0 +1,7 @@
+package org.scoverage;
+
+public class Scala212Test extends ScalaVersionTest {
+ public Scala212Test() {
+ super("2_12");
+ }
+}
\ No newline at end of file
diff --git a/src/crossScalaVersionTest/java/org/scoverage/Scala213Test.java b/src/crossScalaVersionTest/java/org/scoverage/Scala213Test.java
new file mode 100644
index 0000000..0f6ed71
--- /dev/null
+++ b/src/crossScalaVersionTest/java/org/scoverage/Scala213Test.java
@@ -0,0 +1,15 @@
+package org.scoverage;
+
+import org.junit.Ignore;
+
+/**
+ * Tests is currently ignored as support for Scala 2.13 is not available yet.
+ *
+ * @see Issue #106.
+ */
+@Ignore
+public class Scala213Test extends ScalaVersionTest {
+ public Scala213Test() {
+ super("2_13");
+ }
+}
\ No newline at end of file
diff --git a/src/crossScalaVersionTest/java/org/scoverage/ScalaCrossVersionAggregationTest.java b/src/crossScalaVersionTest/java/org/scoverage/ScalaCrossVersionAggregationTest.java
new file mode 100644
index 0000000..d3b66ae
--- /dev/null
+++ b/src/crossScalaVersionTest/java/org/scoverage/ScalaCrossVersionAggregationTest.java
@@ -0,0 +1,46 @@
+package org.scoverage;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.jupiter.api.Tag;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.scoverage.ScoverageFunctionalTest;
+import org.scoverage.ScoveragePlugin;
+
+import java.io.File;
+
+public class ScalaCrossVersionAggregationTest extends ScoverageFunctionalTest {
+
+ public ScalaCrossVersionAggregationTest() {
+ super("scala-multi-module-cross-version");
+ }
+
+ @Test
+ public void checkAndAggregateAll() throws Exception {
+
+ AssertableBuildResult result = run("clean", ScoveragePlugin.getCHECK_NAME(),
+ ScoveragePlugin.getAGGREGATE_NAME());
+
+ result.assertTaskSkipped(ScoveragePlugin.getREPORT_NAME());
+ result.assertTaskSucceeded("2_11:" + ScoveragePlugin.getREPORT_NAME());
+ result.assertTaskSucceeded("2_12:" + ScoveragePlugin.getREPORT_NAME());
+ result.assertTaskSucceeded("2_13:" + ScoveragePlugin.getREPORT_NAME());
+ result.assertTaskSucceeded(ScoveragePlugin.getCHECK_NAME());
+ result.assertTaskSucceeded("2_11:" + ScoveragePlugin.getCHECK_NAME());
+ result.assertTaskSucceeded("2_12:" + ScoveragePlugin.getCHECK_NAME());
+ result.assertTaskSucceeded("2_13:" + ScoveragePlugin.getCHECK_NAME());
+ result.assertTaskSucceeded(ScoveragePlugin.getAGGREGATE_NAME());
+
+ assertAggregationFilesExist();
+ assertCoverage(100.0);
+ }
+
+ private void assertAggregationFilesExist() {
+
+ Assert.assertTrue(resolve(reportDir(), "index.html").exists());
+ Assert.assertTrue(resolve(reportDir(), "2_11/src/main/scala/org/hello/World2_11.scala.html").exists());
+ Assert.assertTrue(resolve(reportDir(), "2_12/src/main/scala/org/hello/World2_12.scala.html").exists());
+ Assert.assertTrue(resolve(reportDir(), "2_13/src/main/scala/org/hello/World2_13.scala.html").exists());
+ }
+}
diff --git a/src/crossScalaVersionTest/java/org/scoverage/ScalaVersionTest.java b/src/crossScalaVersionTest/java/org/scoverage/ScalaVersionTest.java
new file mode 100644
index 0000000..59160f3
--- /dev/null
+++ b/src/crossScalaVersionTest/java/org/scoverage/ScalaVersionTest.java
@@ -0,0 +1,35 @@
+package org.scoverage;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.jupiter.api.Tag;
+import org.scoverage.ScoverageFunctionalTest;
+import org.scoverage.ScoveragePlugin;
+
+import java.io.File;
+
+/**
+ * This abstract class is used to test each scala version in an individual class.
+ * It is crucial that each test will be separated into its own class,
+ * as this is the only way to run these tests in separate JVM processes (via `forkEvery` gradle configuration).
+ */
+public abstract class ScalaVersionTest extends ScoverageFunctionalTest {
+
+ private final String scalaVersion;
+
+ public ScalaVersionTest(String scalaVersion) {
+ super("scala-multi-module-cross-version");
+ this.scalaVersion = scalaVersion;
+ }
+
+ @Test
+ public void report() throws Exception {
+
+ AssertableBuildResult result = run("clean", ":" + scalaVersion + ":" + ScoveragePlugin.getREPORT_NAME());
+ result.assertTaskSucceeded(scalaVersion + ":" + ScoveragePlugin.getREPORT_NAME());
+
+ File reportDir = reportDir(projectDir().toPath().resolve(scalaVersion).toFile());
+ Assert.assertTrue(resolve(reportDir, "index.html").exists());
+ Assert.assertTrue(resolve(reportDir, "src/main/scala/org/hello/World" + scalaVersion + ".scala.html").exists());
+ }
+}
\ No newline at end of file
diff --git a/src/functionalTest/resources/projects/scala-multi-module-cross-version/2_11/build.gradle b/src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/2_11/build.gradle
similarity index 100%
rename from src/functionalTest/resources/projects/scala-multi-module-cross-version/2_11/build.gradle
rename to src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/2_11/build.gradle
diff --git a/src/functionalTest/resources/projects/scala-multi-module-cross-version/2_11/src/main/scala/org/hello/World211.scala b/src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/2_11/src/main/scala/org/hello/World2_11.scala
similarity index 81%
rename from src/functionalTest/resources/projects/scala-multi-module-cross-version/2_11/src/main/scala/org/hello/World211.scala
rename to src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/2_11/src/main/scala/org/hello/World2_11.scala
index 7c7f57b..cab6958 100644
--- a/src/functionalTest/resources/projects/scala-multi-module-cross-version/2_11/src/main/scala/org/hello/World211.scala
+++ b/src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/2_11/src/main/scala/org/hello/World2_11.scala
@@ -1,6 +1,6 @@
package org.hello
-class World211 {
+class World2_11 {
def foo(): String = {
val s = "2" + "11"
diff --git a/src/functionalTest/resources/projects/scala-multi-module-cross-version/2_13/src/test/scala/org/hello/World213Suite.scala b/src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/2_11/src/test/scala/org/hello/World2_11Suite.scala
similarity index 72%
rename from src/functionalTest/resources/projects/scala-multi-module-cross-version/2_13/src/test/scala/org/hello/World213Suite.scala
rename to src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/2_11/src/test/scala/org/hello/World2_11Suite.scala
index ad43f08..2d99209 100644
--- a/src/functionalTest/resources/projects/scala-multi-module-cross-version/2_13/src/test/scala/org/hello/World213Suite.scala
+++ b/src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/2_11/src/test/scala/org/hello/World2_11Suite.scala
@@ -5,9 +5,9 @@ import org.scalatest.FunSuite
import org.scalatest.junit.JUnitRunner
@RunWith(classOf[JUnitRunner])
-class World212Suite extends FunSuite {
+class World2_11Suite extends FunSuite {
test("foo") {
- new World213().foo()
+ new World2_11().foo()
}
}
\ No newline at end of file
diff --git a/src/functionalTest/resources/projects/scala-multi-module-cross-version/2_12/build.gradle b/src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/2_12/build.gradle
similarity index 100%
rename from src/functionalTest/resources/projects/scala-multi-module-cross-version/2_12/build.gradle
rename to src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/2_12/build.gradle
diff --git a/src/functionalTest/resources/projects/scala-multi-module-cross-version/2_13/src/main/scala/org/hello/World213.scala b/src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/2_12/src/main/scala/org/hello/World2_12.scala
similarity index 81%
rename from src/functionalTest/resources/projects/scala-multi-module-cross-version/2_13/src/main/scala/org/hello/World213.scala
rename to src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/2_12/src/main/scala/org/hello/World2_12.scala
index b5fc8fb..c0cc10b 100644
--- a/src/functionalTest/resources/projects/scala-multi-module-cross-version/2_13/src/main/scala/org/hello/World213.scala
+++ b/src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/2_12/src/main/scala/org/hello/World2_12.scala
@@ -1,6 +1,6 @@
package org.hello
-class World213 {
+class World2_12 {
def foo(): String = {
val s = "2" + "12"
diff --git a/src/functionalTest/resources/projects/scala-multi-module-cross-version/2_11/src/test/scala/org/hello/World211Suite.scala b/src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/2_12/src/test/scala/org/hello/World2_12Suite.scala
similarity index 72%
rename from src/functionalTest/resources/projects/scala-multi-module-cross-version/2_11/src/test/scala/org/hello/World211Suite.scala
rename to src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/2_12/src/test/scala/org/hello/World2_12Suite.scala
index f872840..23e5b04 100644
--- a/src/functionalTest/resources/projects/scala-multi-module-cross-version/2_11/src/test/scala/org/hello/World211Suite.scala
+++ b/src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/2_12/src/test/scala/org/hello/World2_12Suite.scala
@@ -5,9 +5,9 @@ import org.scalatest.FunSuite
import org.scalatest.junit.JUnitRunner
@RunWith(classOf[JUnitRunner])
-class World211Suite extends FunSuite {
+class World2_12Suite extends FunSuite {
test("foo") {
- new World211().foo()
+ new World2_12().foo()
}
}
\ No newline at end of file
diff --git a/src/functionalTest/resources/projects/scala-multi-module-cross-version/2_13/build.gradle b/src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/2_13/build.gradle
similarity index 100%
rename from src/functionalTest/resources/projects/scala-multi-module-cross-version/2_13/build.gradle
rename to src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/2_13/build.gradle
diff --git a/src/functionalTest/resources/projects/scala-multi-module-cross-version/2_12/src/main/scala/org/hello/World212.scala b/src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/2_13/src/main/scala/org/hello/World2_13.scala
similarity index 81%
rename from src/functionalTest/resources/projects/scala-multi-module-cross-version/2_12/src/main/scala/org/hello/World212.scala
rename to src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/2_13/src/main/scala/org/hello/World2_13.scala
index 0968efa..d18034b 100644
--- a/src/functionalTest/resources/projects/scala-multi-module-cross-version/2_12/src/main/scala/org/hello/World212.scala
+++ b/src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/2_13/src/main/scala/org/hello/World2_13.scala
@@ -1,6 +1,6 @@
package org.hello
-class World212 {
+class World2_13 {
def foo(): String = {
val s = "2" + "12"
diff --git a/src/functionalTest/resources/projects/scala-multi-module-cross-version/2_12/src/test/scala/org/hello/World212Suite.scala b/src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/2_13/src/test/scala/org/hello/World2_13Suite.scala
similarity index 89%
rename from src/functionalTest/resources/projects/scala-multi-module-cross-version/2_12/src/test/scala/org/hello/World212Suite.scala
rename to src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/2_13/src/test/scala/org/hello/World2_13Suite.scala
index cd26ad3..0628dc4 100644
--- a/src/functionalTest/resources/projects/scala-multi-module-cross-version/2_12/src/test/scala/org/hello/World212Suite.scala
+++ b/src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/2_13/src/test/scala/org/hello/World2_13Suite.scala
@@ -8,6 +8,6 @@ import org.scalatest.junit.JUnitRunner
class World212Suite extends FunSuite {
test("foo") {
- new World212().foo()
+ new World2_13().foo()
}
}
\ No newline at end of file
diff --git a/src/functionalTest/resources/projects/scala-multi-module-cross-version/build.gradle b/src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/build.gradle
similarity index 100%
rename from src/functionalTest/resources/projects/scala-multi-module-cross-version/build.gradle
rename to src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/build.gradle
diff --git a/src/functionalTest/resources/projects/scala-multi-module-cross-version/settings.gradle b/src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/settings.gradle
similarity index 100%
rename from src/functionalTest/resources/projects/scala-multi-module-cross-version/settings.gradle
rename to src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/settings.gradle
diff --git a/src/functionalTest/java/org.scoverage/ScalaMultiModuleCrossVersionTest.java b/src/functionalTest/java/org.scoverage/ScalaMultiModuleCrossVersionTest.java
deleted file mode 100644
index 22ef656..0000000
--- a/src/functionalTest/java/org.scoverage/ScalaMultiModuleCrossVersionTest.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package org.scoverage;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.io.File;
-
-/**
- * Note that it is important to test the case of all of the modules together,
- * along with the cases of each module individually, as they behave differently.
- */
-public class ScalaMultiModuleCrossVersionTest extends ScoverageFunctionalTest {
-
- public ScalaMultiModuleCrossVersionTest() {
- super("scala-multi-module-cross-version");
- }
-
- @Test
- public void checkAndAggregateAll() throws Exception {
-
- AssertableBuildResult result = run("clean", ScoveragePlugin.getCHECK_NAME(),
- ScoveragePlugin.getAGGREGATE_NAME());
-
- result.assertTaskSkipped(ScoveragePlugin.getREPORT_NAME());
- result.assertTaskSucceeded("2_11:" + ScoveragePlugin.getREPORT_NAME());
- result.assertTaskSucceeded("2_12:" + ScoveragePlugin.getREPORT_NAME());
- result.assertTaskSucceeded("2_13:" + ScoveragePlugin.getREPORT_NAME());
- result.assertTaskSucceeded(ScoveragePlugin.getCHECK_NAME());
- result.assertTaskSucceeded("2_11:" + ScoveragePlugin.getCHECK_NAME());
- result.assertTaskSucceeded("2_12:" + ScoveragePlugin.getCHECK_NAME());
- result.assertTaskSucceeded("2_13:" + ScoveragePlugin.getCHECK_NAME());
- result.assertTaskSucceeded(ScoveragePlugin.getAGGREGATE_NAME());
-
- assertAllReportFilesExist();
- assertCoverage(100.0);
- }
-
- @Test
- public void report211() throws Exception {
-
- AssertableBuildResult result = run("clean", ":2_11:" + ScoveragePlugin.getREPORT_NAME());
- result.assertTaskSucceeded("2_11:" + ScoveragePlugin.getREPORT_NAME());
- assert211ReportFilesExist();
- }
-
- @Test
- public void report212() throws Exception {
-
- AssertableBuildResult result = run("clean", ":2_12:" + ScoveragePlugin.getREPORT_NAME());
- result.assertTaskSucceeded("2_12:" + ScoveragePlugin.getREPORT_NAME());
- assert212ReportFilesExist();
- }
-
- @Test
- public void report213() throws Exception {
-
- AssertableBuildResult result = run("clean", ":2_13:" + ScoveragePlugin.getREPORT_NAME());
- result.assertTaskSucceeded("2_13:" + ScoveragePlugin.getREPORT_NAME());
- assert213ReportFilesExist();
- }
-
- private void assertAllReportFilesExist() {
-
- assert211ReportFilesExist();
- assert212ReportFilesExist();
- assert213ReportFilesExist();
- assertAggregationFilesExist();
- }
-
- private void assertAggregationFilesExist() {
-
- Assert.assertTrue(resolve(reportDir(), "index.html").exists());
- Assert.assertTrue(resolve(reportDir(), "2_11/src/main/scala/org/hello/World211.scala.html").exists());
- Assert.assertTrue(resolve(reportDir(), "2_12/src/main/scala/org/hello/World212.scala.html").exists());
- Assert.assertTrue(resolve(reportDir(), "2_13/src/main/scala/org/hello/World213.scala.html").exists());
- }
-
- private void assert211ReportFilesExist() {
-
- File reportDir = reportDir(projectDir().toPath().resolve("2_11").toFile());
- Assert.assertTrue(resolve(reportDir, "index.html").exists());
- Assert.assertTrue(resolve(reportDir, "src/main/scala/org/hello/World211.scala.html").exists());
- }
-
- private void assert212ReportFilesExist() {
-
- File reportDir = reportDir(projectDir().toPath().resolve("2_12").toFile());
- Assert.assertTrue(resolve(reportDir, "index.html").exists());
- Assert.assertTrue(resolve(reportDir, "src/main/scala/org/hello/World212.scala.html").exists());
- }
-
- private void assert213ReportFilesExist() {
-
- File reportDir = reportDir(projectDir().toPath().resolve("2_13").toFile());
- Assert.assertTrue(resolve(reportDir, "index.html").exists());
- Assert.assertTrue(resolve(reportDir, "src/main/scala/org/hello/World213.scala.html").exists());
- }
-}
diff --git a/src/functionalTest/java/org/scoverage/CompositeBuildTest.java b/src/functionalTest/java/org/scoverage/CompositeBuildTest.java
new file mode 100644
index 0000000..98a9ee8
--- /dev/null
+++ b/src/functionalTest/java/org/scoverage/CompositeBuildTest.java
@@ -0,0 +1,46 @@
+package org.scoverage;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Tests are currently ignored as composite builds are not supported yet.
+ *
+ * @see Issue #94.
+ */
+public class CompositeBuildTest extends ScoverageFunctionalTest {
+
+ public CompositeBuildTest() {
+ super("composite-build");
+ }
+
+ @Ignore
+ @Test
+ public void buildComposite() {
+
+ runComposite("clean", "build");
+ }
+
+ @Ignore
+ @Test
+ public void reportComposite() {
+
+ runComposite("clean", ScoveragePlugin.getREPORT_NAME());
+ }
+
+ private AssertableBuildResult runComposite(String... arguments) {
+
+ List fullArguments = new ArrayList();
+ fullArguments.add("-p");
+ fullArguments.add("proj1");
+ fullArguments.add("--include-build");
+ fullArguments.add("../proj2");
+ fullArguments.addAll(Arrays.asList(arguments));
+
+ return run(fullArguments.toArray(new String[0]));
+ }
+}
diff --git a/src/functionalTest/java/org.scoverage/DetectScalaLibraryTest.java b/src/functionalTest/java/org/scoverage/DetectScalaLibraryTest.java
similarity index 100%
rename from src/functionalTest/java/org.scoverage/DetectScalaLibraryTest.java
rename to src/functionalTest/java/org/scoverage/DetectScalaLibraryTest.java
diff --git a/src/functionalTest/java/org.scoverage/MultiModulePluginNotConfiguredForScalaTest.java b/src/functionalTest/java/org/scoverage/MultiModulePluginNotConfiguredForScalaTest.java
similarity index 100%
rename from src/functionalTest/java/org.scoverage/MultiModulePluginNotConfiguredForScalaTest.java
rename to src/functionalTest/java/org/scoverage/MultiModulePluginNotConfiguredForScalaTest.java
diff --git a/src/functionalTest/java/org.scoverage/MultipleCheckTasksTest.java b/src/functionalTest/java/org/scoverage/MultipleCheckTasksTest.java
similarity index 100%
rename from src/functionalTest/java/org.scoverage/MultipleCheckTasksTest.java
rename to src/functionalTest/java/org/scoverage/MultipleCheckTasksTest.java
diff --git a/src/functionalTest/java/org.scoverage/ScalaJavaMultiModuleTest.java b/src/functionalTest/java/org/scoverage/ScalaJavaMultiModuleTest.java
similarity index 100%
rename from src/functionalTest/java/org.scoverage/ScalaJavaMultiModuleTest.java
rename to src/functionalTest/java/org/scoverage/ScalaJavaMultiModuleTest.java
diff --git a/src/functionalTest/java/org.scoverage/ScalaMultiModuleTest.java b/src/functionalTest/java/org/scoverage/ScalaMultiModuleTest.java
similarity index 100%
rename from src/functionalTest/java/org.scoverage/ScalaMultiModuleTest.java
rename to src/functionalTest/java/org/scoverage/ScalaMultiModuleTest.java
diff --git a/src/functionalTest/java/org.scoverage/ScalaMultiModuleWithMultipleTestTasksTest.java b/src/functionalTest/java/org/scoverage/ScalaMultiModuleWithMultipleTestTasksTest.java
similarity index 100%
rename from src/functionalTest/java/org.scoverage/ScalaMultiModuleWithMultipleTestTasksTest.java
rename to src/functionalTest/java/org/scoverage/ScalaMultiModuleWithMultipleTestTasksTest.java
diff --git a/src/functionalTest/java/org.scoverage/ScalaMultiModuleWithPartialScoverageUseTest.java b/src/functionalTest/java/org/scoverage/ScalaMultiModuleWithPartialScoverageUseTest.java
similarity index 100%
rename from src/functionalTest/java/org.scoverage/ScalaMultiModuleWithPartialScoverageUseTest.java
rename to src/functionalTest/java/org/scoverage/ScalaMultiModuleWithPartialScoverageUseTest.java
diff --git a/src/functionalTest/java/org.scoverage/ScalaSingleModuleTest.java b/src/functionalTest/java/org/scoverage/ScalaSingleModuleTest.java
similarity index 100%
rename from src/functionalTest/java/org.scoverage/ScalaSingleModuleTest.java
rename to src/functionalTest/java/org/scoverage/ScalaSingleModuleTest.java
diff --git a/src/functionalTest/java/org.scoverage/ScalaSingleModuleWithDependencyManagerTest.java b/src/functionalTest/java/org/scoverage/ScalaSingleModuleWithDependencyManagerTest.java
similarity index 100%
rename from src/functionalTest/java/org.scoverage/ScalaSingleModuleWithDependencyManagerTest.java
rename to src/functionalTest/java/org/scoverage/ScalaSingleModuleWithDependencyManagerTest.java
diff --git a/src/functionalTest/java/org.scoverage/ScalaSingleModuleWithMultipleTestTasksTest.java b/src/functionalTest/java/org/scoverage/ScalaSingleModuleWithMultipleTestTasksTest.java
similarity index 100%
rename from src/functionalTest/java/org.scoverage/ScalaSingleModuleWithMultipleTestTasksTest.java
rename to src/functionalTest/java/org/scoverage/ScalaSingleModuleWithMultipleTestTasksTest.java
diff --git a/src/functionalTest/java/org.scoverage/ScoverageFunctionalTest.java b/src/functionalTest/java/org/scoverage/ScoverageFunctionalTest.java
similarity index 98%
rename from src/functionalTest/java/org.scoverage/ScoverageFunctionalTest.java
rename to src/functionalTest/java/org/scoverage/ScoverageFunctionalTest.java
index 0341cc2..c1bd0b1 100644
--- a/src/functionalTest/java/org.scoverage/ScoverageFunctionalTest.java
+++ b/src/functionalTest/java/org/scoverage/ScoverageFunctionalTest.java
@@ -50,7 +50,7 @@ protected void setProjectName(String projectName) {
protected File projectDir() {
- return new File("src/functionalTest/resources/projects/" + projectName);
+ return new File(getClass().getClassLoader().getResource("projects/" + projectName).getFile());
}
protected File buildDir() {
diff --git a/src/functionalTest/resources/projects/composite-build/proj1/build.gradle b/src/functionalTest/resources/projects/composite-build/proj1/build.gradle
new file mode 100644
index 0000000..d0e32d3
--- /dev/null
+++ b/src/functionalTest/resources/projects/composite-build/proj1/build.gradle
@@ -0,0 +1,32 @@
+plugins {
+ id 'org.scoverage'
+}
+
+repositories {
+ jcenter()
+}
+
+description = 'a single-module Scala project taking part in a composite build (1)'
+
+apply plugin: 'java'
+apply plugin: 'scala'
+
+
+group "org.composite"
+version '1.0'
+
+dependencies {
+ compile group: 'org.scala-lang', name: 'scala-library', version: "${scalaVersionMajor}.${scalaVersionMinor}.${scalaVersionBuild}"
+
+ testRuntime group: 'org.junit.vintage', name: 'junit-vintage-engine', version: junitVersion
+ testCompile group: 'org.junit.platform', name: 'junit-platform-runner', version: junitPlatformVersion
+
+ testCompile group: 'org.scalatest', name: "scalatest_${scalaVersionMajor}.${scalaVersionMinor}", version: scalatestVersion
+
+ compile "org.composite:proj2:1.0"
+}
+
+test {
+ useJUnitPlatform()
+}
+
diff --git a/src/functionalTest/resources/projects/composite-build/proj1/settings.gradle b/src/functionalTest/resources/projects/composite-build/proj1/settings.gradle
new file mode 100644
index 0000000..e69de29
diff --git a/src/functionalTest/resources/projects/composite-build/proj1/src/main/scala/org/composite/proj1/Foo.scala b/src/functionalTest/resources/projects/composite-build/proj1/src/main/scala/org/composite/proj1/Foo.scala
new file mode 100644
index 0000000..cc5333e
--- /dev/null
+++ b/src/functionalTest/resources/projects/composite-build/proj1/src/main/scala/org/composite/proj1/Foo.scala
@@ -0,0 +1,7 @@
+package org.composite.proj1
+
+import org.composite.proj2.Reporter
+
+class Foo {
+ def bar(): String = "bar"
+}
\ No newline at end of file
diff --git a/src/functionalTest/resources/projects/composite-build/proj1/src/test/scala/org/composite/proj1/FooSuite.scala b/src/functionalTest/resources/projects/composite-build/proj1/src/test/scala/org/composite/proj1/FooSuite.scala
new file mode 100644
index 0000000..370252a
--- /dev/null
+++ b/src/functionalTest/resources/projects/composite-build/proj1/src/test/scala/org/composite/proj1/FooSuite.scala
@@ -0,0 +1,14 @@
+package org.composite.proj1
+
+import org.scalatest.FunSuite
+import org.junit.runner.RunWith
+import org.scalatest.junit.JUnitRunner
+
+@RunWith(classOf[JUnitRunner])
+class FooSuite extends FunSuite {
+
+ test("bar"){
+
+ new Foo().bar()
+ }
+}
\ No newline at end of file
diff --git a/src/functionalTest/resources/projects/composite-build/proj2/build.gradle b/src/functionalTest/resources/projects/composite-build/proj2/build.gradle
new file mode 100644
index 0000000..b86570e
--- /dev/null
+++ b/src/functionalTest/resources/projects/composite-build/proj2/build.gradle
@@ -0,0 +1,30 @@
+plugins {
+ id 'org.scoverage'
+}
+
+repositories {
+ jcenter()
+}
+
+description = 'a single-module Scala project taking part in a composite build (2)'
+
+apply plugin: 'java'
+apply plugin: 'scala'
+
+
+group "org.composite"
+version '1.0'
+
+dependencies {
+ compile group: 'org.scala-lang', name: 'scala-library', version: "${scalaVersionMajor}.${scalaVersionMinor}.${scalaVersionBuild}"
+
+ testRuntime group: 'org.junit.vintage', name: 'junit-vintage-engine', version: junitVersion
+ testCompile group: 'org.junit.platform', name: 'junit-platform-runner', version: junitPlatformVersion
+
+ testCompile group: 'org.scalatest', name: "scalatest_${scalaVersionMajor}.${scalaVersionMinor}", version: scalatestVersion
+}
+
+test {
+ useJUnitPlatform()
+}
+
diff --git a/src/functionalTest/resources/projects/composite-build/proj2/src/main/scala/org/composite/proj2/Reporter.scala b/src/functionalTest/resources/projects/composite-build/proj2/src/main/scala/org/composite/proj2/Reporter.scala
new file mode 100644
index 0000000..11ef036
--- /dev/null
+++ b/src/functionalTest/resources/projects/composite-build/proj2/src/main/scala/org/composite/proj2/Reporter.scala
@@ -0,0 +1,19 @@
+package org.composite.proj2
+
+class Reporter {
+
+ def report(rawData: String): Report = {
+ Report(1,2)
+ }
+
+ class InnerReporter {
+
+ def lala(): Unit = {
+
+ val x = 1 + 1
+ x
+ }
+ }
+}
+
+case class Report(id: Long, count: Int)
\ No newline at end of file
diff --git a/src/functionalTest/resources/projects/composite-build/proj2/src/test/scala/org/composite/proj2/ReporterSuite.scala b/src/functionalTest/resources/projects/composite-build/proj2/src/test/scala/org/composite/proj2/ReporterSuite.scala
new file mode 100644
index 0000000..89de304
--- /dev/null
+++ b/src/functionalTest/resources/projects/composite-build/proj2/src/test/scala/org/composite/proj2/ReporterSuite.scala
@@ -0,0 +1,16 @@
+package org.composite.proj2
+
+import org.scalatest.FunSuite
+import org.junit.runner.RunWith
+import org.scalatest.junit.JUnitRunner
+
+@RunWith(classOf[JUnitRunner])
+class ReporterSuite extends FunSuite {
+
+ test("report"){
+
+ val report = new Reporter().report("x")
+
+ assertResult(Report(1, 2))(report)
+ }
+}