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) + } +}