├── settings.gradle
├── src
├── functionalTest
│ ├── resources
│ │ └── projects
│ │ │ ├── scala-single-module
│ │ │ ├── settings.gradle
│ │ │ ├── src
│ │ │ │ ├── main
│ │ │ │ │ └── scala
│ │ │ │ │ │ └── org
│ │ │ │ │ │ └── hello
│ │ │ │ │ │ └── World.scala
│ │ │ │ └── test
│ │ │ │ │ └── scala
│ │ │ │ │ └── org
│ │ │ │ │ └── hello
│ │ │ │ │ ├── TestNothingSuite.scala
│ │ │ │ │ └── WorldSuite.scala
│ │ │ └── build.gradle
│ │ │ ├── composite-build
│ │ │ ├── proj1
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src
│ │ │ │ │ ├── main
│ │ │ │ │ │ └── scala
│ │ │ │ │ │ │ └── org
│ │ │ │ │ │ │ └── composite
│ │ │ │ │ │ │ └── proj1
│ │ │ │ │ │ │ └── Foo.scala
│ │ │ │ │ └── test
│ │ │ │ │ │ └── scala
│ │ │ │ │ │ └── org
│ │ │ │ │ │ └── composite
│ │ │ │ │ │ └── proj1
│ │ │ │ │ │ └── FooSuite.scala
│ │ │ │ └── build.gradle
│ │ │ └── proj2
│ │ │ │ ├── src
│ │ │ │ ├── main
│ │ │ │ │ └── scala
│ │ │ │ │ │ └── org
│ │ │ │ │ │ └── composite
│ │ │ │ │ │ └── proj2
│ │ │ │ │ │ └── Reporter.scala
│ │ │ │ └── test
│ │ │ │ │ └── scala
│ │ │ │ │ └── org
│ │ │ │ │ └── composite
│ │ │ │ │ └── proj2
│ │ │ │ │ └── ReporterSuite.scala
│ │ │ │ └── build.gradle
│ │ │ ├── detect-scala-library
│ │ │ ├── compile
│ │ │ │ ├── settings.gradle
│ │ │ │ └── build.gradle
│ │ │ ├── compileOnly
│ │ │ │ ├── settings.gradle
│ │ │ │ └── build.gradle
│ │ │ ├── implementation
│ │ │ │ ├── settings.gradle
│ │ │ │ └── build.gradle
│ │ │ ├── dependency-management
│ │ │ │ ├── settings.gradle
│ │ │ │ └── build.gradle
│ │ │ └── gradle-consistent-versions
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── versions.props
│ │ │ │ ├── versions.lock
│ │ │ │ └── build.gradle
│ │ │ ├── multiple-check-tasks
│ │ │ ├── no-check
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src
│ │ │ │ │ ├── main
│ │ │ │ │ │ └── scala
│ │ │ │ │ │ │ └── org
│ │ │ │ │ │ │ └── hello
│ │ │ │ │ │ │ └── World.scala
│ │ │ │ │ └── test
│ │ │ │ │ │ └── scala
│ │ │ │ │ │ └── org
│ │ │ │ │ │ └── hello
│ │ │ │ │ │ └── WorldSuite.scala
│ │ │ │ └── build.gradle
│ │ │ ├── multiple-checks
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src
│ │ │ │ │ ├── main
│ │ │ │ │ │ └── scala
│ │ │ │ │ │ │ └── org
│ │ │ │ │ │ │ └── hello
│ │ │ │ │ │ │ └── World.scala
│ │ │ │ │ └── test
│ │ │ │ │ │ └── scala
│ │ │ │ │ │ └── org
│ │ │ │ │ │ └── hello
│ │ │ │ │ │ └── WorldSuite.scala
│ │ │ │ └── build.gradle
│ │ │ ├── old-and-new-syntax
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src
│ │ │ │ │ ├── main
│ │ │ │ │ │ └── scala
│ │ │ │ │ │ │ └── org
│ │ │ │ │ │ │ └── hello
│ │ │ │ │ │ │ └── World.scala
│ │ │ │ │ └── test
│ │ │ │ │ │ └── scala
│ │ │ │ │ │ └── org
│ │ │ │ │ │ └── hello
│ │ │ │ │ │ └── WorldSuite.scala
│ │ │ │ └── build.gradle
│ │ │ ├── single-check-new-syntax
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src
│ │ │ │ │ ├── main
│ │ │ │ │ │ └── scala
│ │ │ │ │ │ │ └── org
│ │ │ │ │ │ │ └── hello
│ │ │ │ │ │ │ └── World.scala
│ │ │ │ │ └── test
│ │ │ │ │ │ └── scala
│ │ │ │ │ │ └── org
│ │ │ │ │ │ └── hello
│ │ │ │ │ │ └── WorldSuite.scala
│ │ │ │ └── build.gradle
│ │ │ └── single-check-old-syntax
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src
│ │ │ │ ├── main
│ │ │ │ │ └── scala
│ │ │ │ │ │ └── org
│ │ │ │ │ │ └── hello
│ │ │ │ │ │ └── World.scala
│ │ │ │ └── test
│ │ │ │ │ └── scala
│ │ │ │ │ └── org
│ │ │ │ │ └── hello
│ │ │ │ │ └── WorldSuite.scala
│ │ │ │ └── build.gradle
│ │ │ ├── scala-single-module-dependency-manager
│ │ │ ├── settings.gradle
│ │ │ ├── src
│ │ │ │ ├── main
│ │ │ │ │ └── scala
│ │ │ │ │ │ └── org
│ │ │ │ │ │ └── hello
│ │ │ │ │ │ └── World.scala
│ │ │ │ └── test
│ │ │ │ │ └── scala
│ │ │ │ │ └── org
│ │ │ │ │ └── hello
│ │ │ │ │ └── WorldSuite.scala
│ │ │ └── build.gradle
│ │ │ ├── scala-single-module-multiple-test-tasks
│ │ │ ├── settings.gradle
│ │ │ ├── src
│ │ │ │ ├── main
│ │ │ │ │ └── scala
│ │ │ │ │ │ └── org
│ │ │ │ │ │ └── hello
│ │ │ │ │ │ └── World.scala
│ │ │ │ ├── intTest
│ │ │ │ │ └── scala
│ │ │ │ │ │ └── org
│ │ │ │ │ │ └── hello
│ │ │ │ │ │ ├── TestNothingSuite.scala
│ │ │ │ │ │ └── WorldIntSuite.scala
│ │ │ │ └── test
│ │ │ │ │ └── scala
│ │ │ │ │ └── org
│ │ │ │ │ └── hello
│ │ │ │ │ └── WorldSuite.scala
│ │ │ └── build.gradle
│ │ │ ├── scala-multi-module-with-partial-scoverage-use
│ │ │ ├── a
│ │ │ │ ├── build.gradle
│ │ │ │ └── src
│ │ │ │ │ └── main
│ │ │ │ │ └── scala
│ │ │ │ │ └── org
│ │ │ │ │ └── hello
│ │ │ │ │ └── a
│ │ │ │ │ └── WorldA.scala
│ │ │ ├── b
│ │ │ │ ├── build.gradle
│ │ │ │ └── src
│ │ │ │ │ └── main
│ │ │ │ │ └── scala
│ │ │ │ │ └── org
│ │ │ │ │ └── hello
│ │ │ │ │ └── b
│ │ │ │ │ └── WorldB.scala
│ │ │ ├── settings.gradle
│ │ │ ├── src
│ │ │ │ └── main
│ │ │ │ │ └── scala
│ │ │ │ │ └── org
│ │ │ │ │ └── hello
│ │ │ │ │ └── World.scala
│ │ │ └── build.gradle
│ │ │ ├── scala-java-annotation-processor
│ │ │ ├── lombok.config
│ │ │ ├── settings.gradle
│ │ │ ├── java_only
│ │ │ │ ├── build.gradle
│ │ │ │ └── src
│ │ │ │ │ ├── main
│ │ │ │ │ └── java
│ │ │ │ │ │ └── org
│ │ │ │ │ │ └── hello
│ │ │ │ │ │ └── WorldJavaOnly.java
│ │ │ │ │ └── test
│ │ │ │ │ └── java
│ │ │ │ │ └── org
│ │ │ │ │ └── hello
│ │ │ │ │ └── WorldJavaOnlyTest.java
│ │ │ ├── mixed_scala_java
│ │ │ │ ├── src
│ │ │ │ │ ├── main
│ │ │ │ │ │ ├── java
│ │ │ │ │ │ │ └── org
│ │ │ │ │ │ │ │ └── hello
│ │ │ │ │ │ │ │ └── WorldJava.java
│ │ │ │ │ │ └── scala
│ │ │ │ │ │ │ └── org
│ │ │ │ │ │ │ └── hello
│ │ │ │ │ │ │ └── WorldScala.scala
│ │ │ │ │ └── test
│ │ │ │ │ │ ├── java
│ │ │ │ │ │ └── org
│ │ │ │ │ │ │ └── hello
│ │ │ │ │ │ │ └── WorldJavaTest.java
│ │ │ │ │ │ └── scala
│ │ │ │ │ │ └── org
│ │ │ │ │ │ └── hello
│ │ │ │ │ │ └── WorldScalaSuite.scala
│ │ │ │ └── build.gradle
│ │ │ └── build.gradle
│ │ │ ├── scala-multi-module
│ │ │ ├── settings.gradle
│ │ │ ├── a
│ │ │ │ ├── build.gradle
│ │ │ │ └── src
│ │ │ │ │ ├── main
│ │ │ │ │ └── scala
│ │ │ │ │ │ └── org
│ │ │ │ │ │ └── hello
│ │ │ │ │ │ └── a
│ │ │ │ │ │ └── WorldA.scala
│ │ │ │ │ └── test
│ │ │ │ │ └── scala
│ │ │ │ │ └── org
│ │ │ │ │ └── hello
│ │ │ │ │ └── a
│ │ │ │ │ ├── TestNothingASuite.scala
│ │ │ │ │ └── WorldASuite.scala
│ │ │ ├── b
│ │ │ │ ├── build.gradle
│ │ │ │ └── src
│ │ │ │ │ ├── main
│ │ │ │ │ └── scala
│ │ │ │ │ │ └── org
│ │ │ │ │ │ └── hello
│ │ │ │ │ │ └── b
│ │ │ │ │ │ └── WorldB.scala
│ │ │ │ │ └── test
│ │ │ │ │ └── scala
│ │ │ │ │ └── org
│ │ │ │ │ └── hello
│ │ │ │ │ └── b
│ │ │ │ │ ├── TestNothingBSuite.scala
│ │ │ │ │ └── WorldBSuite.scala
│ │ │ ├── src
│ │ │ │ ├── main
│ │ │ │ │ └── scala
│ │ │ │ │ │ └── org
│ │ │ │ │ │ └── hello
│ │ │ │ │ │ └── World.scala
│ │ │ │ └── test
│ │ │ │ │ └── scala
│ │ │ │ │ └── org
│ │ │ │ │ └── hello
│ │ │ │ │ ├── TestNothingSuite.scala
│ │ │ │ │ └── WorldSuite.scala
│ │ │ ├── common
│ │ │ │ └── src
│ │ │ │ │ ├── main
│ │ │ │ │ └── scala
│ │ │ │ │ │ └── org
│ │ │ │ │ │ └── hello
│ │ │ │ │ │ └── common
│ │ │ │ │ │ └── WorldCommon.scala
│ │ │ │ │ └── test
│ │ │ │ │ └── scala
│ │ │ │ │ └── org
│ │ │ │ │ └── hello
│ │ │ │ │ └── common
│ │ │ │ │ ├── TestNothingCommonSuite.scala
│ │ │ │ │ └── WorldCommonSuite.scala
│ │ │ ├── dependencies
│ │ │ │ └── build.gradle
│ │ │ └── build.gradle
│ │ │ ├── scala-multi-module-multiple-test-tasks
│ │ │ ├── settings.gradle
│ │ │ ├── a
│ │ │ │ ├── build.gradle
│ │ │ │ └── src
│ │ │ │ │ ├── test
│ │ │ │ │ └── scala
│ │ │ │ │ │ └── org
│ │ │ │ │ │ └── hello
│ │ │ │ │ │ └── a
│ │ │ │ │ │ ├── TestNothingASuite.scala
│ │ │ │ │ │ └── WorldASuite.scala
│ │ │ │ │ ├── intTest
│ │ │ │ │ └── scala
│ │ │ │ │ │ └── org
│ │ │ │ │ │ └── hello
│ │ │ │ │ │ └── a
│ │ │ │ │ │ └── WorldAIntSuite.scala
│ │ │ │ │ └── main
│ │ │ │ │ └── scala
│ │ │ │ │ └── org
│ │ │ │ │ └── hello
│ │ │ │ │ └── a
│ │ │ │ │ └── WorldA.scala
│ │ │ ├── b
│ │ │ │ ├── build.gradle
│ │ │ │ └── src
│ │ │ │ │ ├── test
│ │ │ │ │ └── scala
│ │ │ │ │ │ └── org
│ │ │ │ │ │ └── hello
│ │ │ │ │ │ └── b
│ │ │ │ │ │ ├── TestNothingBSuite.scala
│ │ │ │ │ │ └── WorldBSuite.scala
│ │ │ │ │ ├── intTest
│ │ │ │ │ └── scala
│ │ │ │ │ │ └── org
│ │ │ │ │ │ └── hello
│ │ │ │ │ │ └── b
│ │ │ │ │ │ └── WorldBIntSuite.scala
│ │ │ │ │ └── main
│ │ │ │ │ └── scala
│ │ │ │ │ └── org
│ │ │ │ │ └── hello
│ │ │ │ │ └── b
│ │ │ │ │ └── WorldB.scala
│ │ │ ├── src
│ │ │ │ ├── main
│ │ │ │ │ └── scala
│ │ │ │ │ │ └── org
│ │ │ │ │ │ └── hello
│ │ │ │ │ │ └── World.scala
│ │ │ │ ├── test
│ │ │ │ │ └── scala
│ │ │ │ │ │ └── org
│ │ │ │ │ │ └── hello
│ │ │ │ │ │ ├── TestNothingSuite.scala
│ │ │ │ │ │ └── WorldSuite.scala
│ │ │ │ └── intTest
│ │ │ │ │ └── scala
│ │ │ │ │ └── org
│ │ │ │ │ └── hello
│ │ │ │ │ ├── TestNothingSuite.scala
│ │ │ │ │ └── WorldIntSuite.scala
│ │ │ ├── common
│ │ │ │ └── src
│ │ │ │ │ ├── main
│ │ │ │ │ └── scala
│ │ │ │ │ │ └── org
│ │ │ │ │ │ └── hello
│ │ │ │ │ │ └── common
│ │ │ │ │ │ └── WorldCommon.scala
│ │ │ │ │ └── test
│ │ │ │ │ └── scala
│ │ │ │ │ └── org
│ │ │ │ │ └── hello
│ │ │ │ │ └── common
│ │ │ │ │ ├── TestNothingCommonSuite.scala
│ │ │ │ │ └── WorldCommonSuite.scala
│ │ │ └── build.gradle
│ │ │ ├── scala-java-multi-module
│ │ │ ├── settings.gradle
│ │ │ ├── java_only
│ │ │ │ ├── build.gradle
│ │ │ │ └── src
│ │ │ │ │ ├── main
│ │ │ │ │ └── java
│ │ │ │ │ │ └── org
│ │ │ │ │ │ └── hello
│ │ │ │ │ │ └── WorldJavaOnly.java
│ │ │ │ │ └── test
│ │ │ │ │ └── java
│ │ │ │ │ └── org
│ │ │ │ │ └── hello
│ │ │ │ │ └── WorldJavaOnlyTest.java
│ │ │ ├── mixed_scala_java
│ │ │ │ ├── src
│ │ │ │ │ ├── main
│ │ │ │ │ │ ├── scala
│ │ │ │ │ │ │ └── org
│ │ │ │ │ │ │ │ └── hello
│ │ │ │ │ │ │ │ └── WorldScala.scala
│ │ │ │ │ │ └── java
│ │ │ │ │ │ │ └── org
│ │ │ │ │ │ │ └── hello
│ │ │ │ │ │ │ └── WorldJava.java
│ │ │ │ │ └── test
│ │ │ │ │ │ ├── java
│ │ │ │ │ │ └── org
│ │ │ │ │ │ │ └── hello
│ │ │ │ │ │ │ └── WorldJavaTest.java
│ │ │ │ │ │ └── scala
│ │ │ │ │ │ └── org
│ │ │ │ │ │ └── hello
│ │ │ │ │ │ └── WorldScalaSuite.scala
│ │ │ │ └── build.gradle
│ │ │ ├── scala_only
│ │ │ │ ├── src
│ │ │ │ │ ├── main
│ │ │ │ │ │ └── scala
│ │ │ │ │ │ │ └── org
│ │ │ │ │ │ │ └── hello
│ │ │ │ │ │ │ └── WorldScalaOnly.scala
│ │ │ │ │ └── test
│ │ │ │ │ │ └── scala
│ │ │ │ │ │ └── org
│ │ │ │ │ │ └── hello
│ │ │ │ │ │ └── WorldScalaOnlySuite.scala
│ │ │ │ └── build.gradle
│ │ │ └── build.gradle
│ │ │ └── multi-module-plugin-not-configured-for-scala
│ │ │ ├── settings.gradle
│ │ │ ├── java_only
│ │ │ ├── build.gradle
│ │ │ └── src
│ │ │ │ ├── main
│ │ │ │ └── java
│ │ │ │ │ └── org
│ │ │ │ │ └── hello
│ │ │ │ │ └── WorldJavaOnly.java
│ │ │ │ └── test
│ │ │ │ └── java
│ │ │ │ └── org
│ │ │ │ └── hello
│ │ │ │ └── WorldJavaOnlyTest.java
│ │ │ ├── scala_only
│ │ │ ├── src
│ │ │ │ ├── main
│ │ │ │ │ └── scala
│ │ │ │ │ │ └── org
│ │ │ │ │ │ └── hello
│ │ │ │ │ │ └── WorldScalaOnly.scala
│ │ │ │ └── test
│ │ │ │ │ └── scala
│ │ │ │ │ └── org
│ │ │ │ │ └── hello
│ │ │ │ │ └── WorldScalaOnlySuite.scala
│ │ │ └── build.gradle
│ │ │ ├── dependencies
│ │ │ └── build.gradle
│ │ │ └── build.gradle
│ └── java
│ │ └── org
│ │ └── scoverage
│ │ ├── ScalaMultiModuleWithPartialScoverageUseTest.java
│ │ ├── ScalaVersionArguments.java
│ │ ├── ScalaSingleModuleWithDependencyManagerTest.java
│ │ ├── CompositeBuildTest.java
│ │ ├── MultiModulePluginNotConfiguredForScalaTest.java
│ │ ├── ScalaJavaAnnotationProcessorTest.java
│ │ ├── ScalaSingleModuleTestScala3.java
│ │ ├── ScalaJavaMultiModuleTest.java
│ │ ├── DetectScalaLibraryTest.java
│ │ ├── MultipleCheckTasksTest.java
│ │ ├── ScalaSingleModuleTest.java
│ │ ├── ScoverageFunctionalTest.java
│ │ ├── ScalaSingleModuleWithMultipleTestTasksTest.java
│ │ ├── ScalaMultiModuleWithMultipleTestTasksTest.java
│ │ └── ScalaMultiModuleTest.java
├── crossScalaVersionTest
│ ├── resources
│ │ └── projects
│ │ │ └── scala-multi-module-cross-version
│ │ │ ├── settings.gradle
│ │ │ ├── 2_12
│ │ │ ├── src
│ │ │ │ ├── main
│ │ │ │ │ └── scala
│ │ │ │ │ │ └── org
│ │ │ │ │ │ └── hello
│ │ │ │ │ │ └── World2_12.scala
│ │ │ │ └── test
│ │ │ │ │ └── scala
│ │ │ │ │ └── org
│ │ │ │ │ └── hello
│ │ │ │ │ └── World2_12Suite.scala
│ │ │ └── build.gradle
│ │ │ ├── 2_13
│ │ │ ├── src
│ │ │ │ ├── main
│ │ │ │ │ └── scala
│ │ │ │ │ │ └── org
│ │ │ │ │ │ └── hello
│ │ │ │ │ │ └── World2_13.scala
│ │ │ │ └── test
│ │ │ │ │ └── scala
│ │ │ │ │ └── org
│ │ │ │ │ └── hello
│ │ │ │ │ └── World2_13Suite.scala
│ │ │ └── build.gradle
│ │ │ ├── 3_2
│ │ │ ├── build.gradle
│ │ │ └── src
│ │ │ │ ├── test
│ │ │ │ └── scala
│ │ │ │ │ └── org
│ │ │ │ │ └── hello
│ │ │ │ │ └── World3_2Suite.scala
│ │ │ │ └── main
│ │ │ │ └── scala
│ │ │ │ └── org
│ │ │ │ └── hello
│ │ │ │ └── World3_2.scala
│ │ │ └── build.gradle
│ └── java
│ │ └── org
│ │ └── scoverage
│ │ ├── Scala32Test.java
│ │ ├── Scala212Test.java
│ │ ├── Scala213Test.java
│ │ ├── ScalaVersionTest.java
│ │ └── ScalaCrossVersionAggregationTest.java
├── test
│ ├── resources
│ │ └── checkTask
│ │ │ ├── cobertura.xml
│ │ │ └── scoverage.xml
│ └── groovy
│ │ └── org
│ │ └── scoverage
│ │ └── CoverageCheckerTest.groovy
└── main
│ └── groovy
│ └── org
│ └── scoverage
│ ├── ScoverageRunner.groovy
│ ├── ScalaVersion.groovy
│ ├── ScoverageReport.groovy
│ ├── ScoverageAggregate.groovy
│ ├── CoverageChecker.groovy
│ ├── ScoverageExtension.groovy
│ └── ScoverageWriter.java
├── .gitignore
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── .gitattributes
├── .github
└── workflows
│ └── gradle.yml
├── gradlew.bat
├── README.md
├── gradlew
└── LICENSE.txt
/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name='gradle-scoverage'
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-single-module/settings.gradle:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/composite-build/proj1/settings.gradle:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/detect-scala-library/compile/settings.gradle:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/multiple-check-tasks/no-check/settings.gradle:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/detect-scala-library/compileOnly/settings.gradle:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | classes
2 | build
3 | out
4 | .gradle
5 |
6 | *.iml
7 | *.ipr
8 | *.iws
9 | *.idea
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/detect-scala-library/implementation/settings.gradle:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/multiple-check-tasks/multiple-checks/settings.gradle:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/multiple-check-tasks/old-and-new-syntax/settings.gradle:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-single-module-dependency-manager/settings.gradle:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-single-module-multiple-test-tasks/settings.gradle:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/detect-scala-library/dependency-management/settings.gradle:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/multiple-check-tasks/single-check-new-syntax/settings.gradle:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/multiple-check-tasks/single-check-old-syntax/settings.gradle:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module-with-partial-scoverage-use/a/build.gradle:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module-with-partial-scoverage-use/b/build.gradle:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/detect-scala-library/gradle-consistent-versions/settings.gradle:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-java-annotation-processor/lombok.config:
--------------------------------------------------------------------------------
1 | lombok.accessors.fluent=true
2 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module-with-partial-scoverage-use/settings.gradle:
--------------------------------------------------------------------------------
1 | include 'a', 'b'
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module/settings.gradle:
--------------------------------------------------------------------------------
1 | include 'dependencies', 'a', 'b', 'common'
--------------------------------------------------------------------------------
/src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/settings.gradle:
--------------------------------------------------------------------------------
1 | include '2_12', '2_13', '3_2'
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module-multiple-test-tasks/settings.gradle:
--------------------------------------------------------------------------------
1 | include 'a', 'b', 'common'
2 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scoverage/gradle-scoverage/HEAD/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-java-annotation-processor/settings.gradle:
--------------------------------------------------------------------------------
1 | include 'java_only', 'mixed_scala_java'
2 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-java-multi-module/settings.gradle:
--------------------------------------------------------------------------------
1 | include 'java_only', 'scala_only', 'mixed_scala_java'
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module/a/build.gradle:
--------------------------------------------------------------------------------
1 | dependencies {
2 | implementation project(":common")
3 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module/b/build.gradle:
--------------------------------------------------------------------------------
1 | dependencies {
2 | implementation project(":common")
3 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/detect-scala-library/gradle-consistent-versions/versions.props:
--------------------------------------------------------------------------------
1 | org.scala-lang:scala-library = 2.12.0
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/multi-module-plugin-not-configured-for-scala/settings.gradle:
--------------------------------------------------------------------------------
1 | include 'dependencies', 'java_only', 'scala_only'
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module-multiple-test-tasks/a/build.gradle:
--------------------------------------------------------------------------------
1 | dependencies {
2 | implementation project(":common")
3 | }
4 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module-multiple-test-tasks/b/build.gradle:
--------------------------------------------------------------------------------
1 | dependencies {
2 | implementation project(":common")
3 | }
4 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | *.java text eol=lf
2 | *.MD text eol=lf
3 | *.gradle text eol=lf
4 | *.groovy text eol=lf
5 | *.properties text eol=lf
6 | *.scala text eol=lf
7 |
--------------------------------------------------------------------------------
/src/crossScalaVersionTest/java/org/scoverage/Scala32Test.java:
--------------------------------------------------------------------------------
1 | package org.scoverage;
2 |
3 | public class Scala32Test extends ScalaVersionTest {
4 |
5 | public Scala32Test() { super("3_2"); }
6 | }
7 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/multi-module-plugin-not-configured-for-scala/java_only/build.gradle:
--------------------------------------------------------------------------------
1 | dependencies {
2 | testRuntimeOnly group: 'org.junit.vintage', name: 'junit-vintage-engine'
3 | }
4 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/multiple-check-tasks/no-check/src/main/scala/org/hello/World.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | class World {
4 |
5 | def foo(): String = {
6 | "a" + "b"
7 | }
8 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-java-multi-module/java_only/build.gradle:
--------------------------------------------------------------------------------
1 | dependencies {
2 | testRuntimeOnly group: 'org.junit.vintage', name: 'junit-vintage-engine', version: junitVersion
3 | }
4 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/multiple-check-tasks/multiple-checks/src/main/scala/org/hello/World.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | class World {
4 |
5 | def foo(): String = {
6 | "a" + "b"
7 | }
8 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module/src/main/scala/org/hello/World.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | class World {
4 |
5 | def foo(): String = {
6 | val s = "a" + "b"
7 | s
8 | }
9 | }
--------------------------------------------------------------------------------
/src/crossScalaVersionTest/java/org/scoverage/Scala212Test.java:
--------------------------------------------------------------------------------
1 | package org.scoverage;
2 |
3 | public class Scala212Test extends ScalaVersionTest {
4 | public Scala212Test() {
5 | super("2_12");
6 | }
7 | }
--------------------------------------------------------------------------------
/src/crossScalaVersionTest/java/org/scoverage/Scala213Test.java:
--------------------------------------------------------------------------------
1 | package org.scoverage;
2 |
3 | public class Scala213Test extends ScalaVersionTest {
4 | public Scala213Test() {
5 | super("2_13");
6 | }
7 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/detect-scala-library/gradle-consistent-versions/versions.lock:
--------------------------------------------------------------------------------
1 | # Run ./gradlew --write-locks to regenerate this file
2 | org.scala-lang:scala-library:2.12.0 (1 constraints: 3705353b)
3 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/multiple-check-tasks/old-and-new-syntax/src/main/scala/org/hello/World.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | class World {
4 |
5 | def foo(): String = {
6 | "a" + "b"
7 | }
8 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-java-annotation-processor/java_only/build.gradle:
--------------------------------------------------------------------------------
1 | dependencies {
2 | testRuntimeOnly group: 'org.junit.vintage', name: 'junit-vintage-engine', version: junitVersion
3 | }
4 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/multiple-check-tasks/single-check-new-syntax/src/main/scala/org/hello/World.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | class World {
4 |
5 | def foo(): String = {
6 | "a" + "b"
7 | }
8 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/multiple-check-tasks/single-check-old-syntax/src/main/scala/org/hello/World.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | class World {
4 |
5 | def foo(): String = {
6 | "a" + "b"
7 | }
8 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module-with-partial-scoverage-use/a/src/main/scala/org/hello/a/WorldA.scala:
--------------------------------------------------------------------------------
1 | package org.hello.a
2 |
3 | class WorldA {
4 |
5 | def fooA(): String = {
6 | "a"
7 | }
8 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module-with-partial-scoverage-use/b/src/main/scala/org/hello/b/WorldB.scala:
--------------------------------------------------------------------------------
1 | package org.hello.b
2 |
3 | class WorldB {
4 |
5 | def fooB(): String = {
6 | "b"
7 | }
8 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/composite-build/proj1/src/main/scala/org/composite/proj1/Foo.scala:
--------------------------------------------------------------------------------
1 | package org.composite.proj1
2 |
3 | import org.composite.proj2.Reporter
4 |
5 | class Foo {
6 | def bar(): String = "bar"
7 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-single-module-dependency-manager/src/main/scala/org/hello/World.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | class World {
4 |
5 | def foo(): String = {
6 | val s = "a" + "b"
7 | s
8 | }
9 | }
--------------------------------------------------------------------------------
/src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/2_12/src/main/scala/org/hello/World2_12.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | class World2_12 {
4 |
5 | def foo(): String = {
6 | val s = "2" + "12"
7 | s
8 | }
9 | }
--------------------------------------------------------------------------------
/src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/2_13/src/main/scala/org/hello/World2_13.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | class World2_13 {
4 |
5 | def foo(): String = {
6 | val s = "2" + "12"
7 | s
8 | }
9 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-java-multi-module/mixed_scala_java/src/main/scala/org/hello/WorldScala.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | class WorldScala {
4 |
5 | def foo(): String = {
6 | val s = "scala" + "a"
7 | s
8 | }
9 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-java-multi-module/scala_only/src/main/scala/org/hello/WorldScalaOnly.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | class WorldScalaOnly {
4 |
5 | def foo(): String = {
6 | val s = "scala_only" + "a"
7 | s
8 | }
9 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module/common/src/main/scala/org/hello/common/WorldCommon.scala:
--------------------------------------------------------------------------------
1 | package org.hello.common
2 |
3 | class WorldCommon {
4 |
5 | def fooCommon(): String = {
6 | val s = "common" + "a"
7 | s
8 | }
9 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-java-annotation-processor/mixed_scala_java/src/main/java/org/hello/WorldJava.java:
--------------------------------------------------------------------------------
1 | package org.hello;
2 |
3 | import lombok.Value;
4 |
5 | @Value
6 | public class WorldJava {
7 | private final String foo = "java";
8 | }
9 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-java-annotation-processor/mixed_scala_java/src/main/scala/org/hello/WorldScala.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | class WorldScala {
4 | private val worldJava = new WorldJava()
5 |
6 | def foo() = worldJava.foo()
7 | }
8 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-java-annotation-processor/java_only/src/main/java/org/hello/WorldJavaOnly.java:
--------------------------------------------------------------------------------
1 | package org.hello;
2 |
3 | import lombok.Value;
4 |
5 | @Value
6 | public class WorldJavaOnly {
7 | private final String foo = "java_only";
8 | }
9 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/multi-module-plugin-not-configured-for-scala/scala_only/src/main/scala/org/hello/WorldScalaOnly.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | class WorldScalaOnly {
4 |
5 | def foo(): String = {
6 | val s = "scala_only" + "a"
7 | s
8 | }
9 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-java-multi-module/mixed_scala_java/src/main/java/org/hello/WorldJava.java:
--------------------------------------------------------------------------------
1 | package org.hello;
2 |
3 | public class WorldJava {
4 |
5 | public String foo() {
6 | String s = "java" + "a";
7 | return s;
8 | }
9 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-java-multi-module/java_only/src/main/java/org/hello/WorldJavaOnly.java:
--------------------------------------------------------------------------------
1 | package org.hello;
2 |
3 | public class WorldJavaOnly {
4 |
5 | public String foo() {
6 | String s = "java_only" + "a";
7 | return s;
8 | }
9 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-single-module-multiple-test-tasks/src/main/scala/org/hello/World.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | class World {
4 |
5 | def foo(): String = {
6 | val s = "a" + "b"
7 | s
8 | }
9 |
10 | def bar(): String = "bar"
11 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module-multiple-test-tasks/src/main/scala/org/hello/World.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | class World {
4 |
5 | def foo(): String = {
6 | val s = "a" + "b"
7 | s
8 | }
9 |
10 | def bar(): String = "bar"
11 | }
12 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module-multiple-test-tasks/common/src/main/scala/org/hello/common/WorldCommon.scala:
--------------------------------------------------------------------------------
1 | package org.hello.common
2 |
3 | class WorldCommon {
4 |
5 | def fooCommon(): String = {
6 | val s = "common" + "a"
7 | s
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-single-module/src/main/scala/org/hello/World.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | class World {
4 |
5 | def foo(): String = {
6 | val s = "a" + "b"
7 | s
8 | }
9 |
10 | // not covered by tests
11 | def bar(): String = "y"
12 | }
--------------------------------------------------------------------------------
/src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/3_2/build.gradle:
--------------------------------------------------------------------------------
1 | dependencies {
2 | implementation 'org.scala-lang:scala3-library_3:3.4.2'
3 | testImplementation 'org.scalatest:scalatest_3:3.2.16'
4 | testImplementation "org.scalatestplus:junit-4-13_3:3.2.16.0"
5 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/multi-module-plugin-not-configured-for-scala/java_only/src/main/java/org/hello/WorldJavaOnly.java:
--------------------------------------------------------------------------------
1 | package org.hello;
2 |
3 | public class WorldJavaOnly {
4 |
5 | public String foo() {
6 | String s = "java_only" + "a";
7 | return s;
8 | }
9 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module/a/src/main/scala/org/hello/a/WorldA.scala:
--------------------------------------------------------------------------------
1 | package org.hello.a
2 |
3 | import org.hello.common.WorldCommon
4 |
5 | class WorldA {
6 |
7 | def fooA(): String = {
8 | val s = "a" + new WorldCommon().fooCommon()
9 | s
10 | }
11 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module/b/src/main/scala/org/hello/b/WorldB.scala:
--------------------------------------------------------------------------------
1 | package org.hello.b
2 |
3 | import org.hello.common.WorldCommon
4 |
5 | class WorldB {
6 |
7 | def fooB(): String = {
8 | val s = "b" + new WorldCommon().fooCommon()
9 | s
10 | }
11 | }
--------------------------------------------------------------------------------
/src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/2_12/build.gradle:
--------------------------------------------------------------------------------
1 | dependencies {
2 | implementation group: 'org.scala-lang', name: 'scala-library', version: "2.12.17"
3 | testImplementation group: 'org.scalatest', name: "scalatest_2.12", version: scalatestVersion
4 | }
5 |
--------------------------------------------------------------------------------
/src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/2_13/build.gradle:
--------------------------------------------------------------------------------
1 | dependencies {
2 | implementation group: 'org.scala-lang', name: 'scala-library', version: "2.13.10"
3 | testImplementation group: 'org.scalatest', name: "scalatest_2.13", version: scalatestVersion
4 | }
5 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-java-multi-module/mixed_scala_java/src/test/java/org/hello/WorldJavaTest.java:
--------------------------------------------------------------------------------
1 | package org.hello;
2 |
3 | import org.junit.Test;
4 |
5 | public class WorldJavaTest {
6 |
7 | @Test
8 | public void foo() {
9 | new WorldJava().foo();
10 | }
11 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-java-multi-module/java_only/src/test/java/org/hello/WorldJavaOnlyTest.java:
--------------------------------------------------------------------------------
1 | package org.hello;
2 |
3 | import org.junit.Test;
4 |
5 | public class WorldJavaOnlyTest {
6 |
7 | @Test
8 | public void foo() {
9 | new WorldJavaOnly().foo();
10 | }
11 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module-with-partial-scoverage-use/src/main/scala/org/hello/World.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | import org.hello.a.WorldA
4 | import org.hello.a.WorldB
5 |
6 | class World {
7 |
8 | def foo(): String = {
9 | WorldA.foo() + WorldB.foo()
10 | }
11 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-java-annotation-processor/mixed_scala_java/src/test/java/org/hello/WorldJavaTest.java:
--------------------------------------------------------------------------------
1 | package org.hello;
2 |
3 | import org.junit.Test;
4 |
5 | public class WorldJavaTest {
6 |
7 | @Test
8 | public void foo() {
9 | new WorldJava().foo();
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-java-annotation-processor/java_only/src/test/java/org/hello/WorldJavaOnlyTest.java:
--------------------------------------------------------------------------------
1 | package org.hello;
2 |
3 | import org.junit.Test;
4 |
5 | public class WorldJavaOnlyTest {
6 |
7 | @Test
8 | public void foo() {
9 | new WorldJavaOnly().foo();
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/multi-module-plugin-not-configured-for-scala/java_only/src/test/java/org/hello/WorldJavaOnlyTest.java:
--------------------------------------------------------------------------------
1 | package org.hello;
2 |
3 | import org.junit.Test;
4 |
5 | public class WorldJavaOnlyTest {
6 |
7 | @Test
8 | public void foo() {
9 | new WorldJavaOnly().foo();
10 | }
11 | }
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
4 | distributionSha256Sum=f397b287023acdba1e9f6fc5ea72d22dd63669d59ed4a289a29b1a76eee151c6
5 | zipStoreBase=GRADLE_USER_HOME
6 | zipStorePath=wrapper/dists
7 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module/src/test/scala/org/hello/TestNothingSuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class TestNothingSuite extends FunSuite {
9 |
10 | test("nothing") {
11 | }
12 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module/a/src/test/scala/org/hello/a/TestNothingASuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello.a
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class TestNothingASuite extends FunSuite {
9 |
10 | test("nothing") {
11 | }
12 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module/b/src/test/scala/org/hello/b/TestNothingBSuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello.b
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class TestNothingBSuite extends FunSuite {
9 |
10 | test("nothing") {
11 | }
12 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module/src/test/scala/org/hello/WorldSuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class WorldSuite extends FunSuite {
9 |
10 | test("foo") {
11 | new World().foo()
12 | }
13 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-single-module/src/test/scala/org/hello/TestNothingSuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.funsuite._
5 | import org.scalatestplus.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class TestNothingSuite extends AnyFunSuite {
9 |
10 | test("nothing") {
11 | }
12 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/multiple-check-tasks/no-check/src/test/scala/org/hello/WorldSuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class WorldSuite extends FunSuite {
9 |
10 | test("foo") {
11 | new World().foo()
12 | }
13 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module/a/src/test/scala/org/hello/a/WorldASuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello.a
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class WorldASuite extends FunSuite {
9 |
10 | test("fooA") {
11 | new WorldA().fooA()
12 | }
13 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module/b/src/test/scala/org/hello/b/WorldBSuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello.b
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class WorldBSuite extends FunSuite {
9 |
10 | test("fooB") {
11 | new WorldB().fooB()
12 | }
13 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-single-module/src/test/scala/org/hello/WorldSuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.funsuite._
5 | import org.scalatestplus.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class WorldSuite extends AnyFunSuite {
9 |
10 | test("foo") {
11 | new World().foo()
12 | }
13 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module-multiple-test-tasks/src/test/scala/org/hello/TestNothingSuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class TestNothingSuite extends FunSuite {
9 |
10 | test("nothing") {
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-single-module-multiple-test-tasks/src/intTest/scala/org/hello/TestNothingSuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class TestNothingSuite extends FunSuite {
9 |
10 | test("nothing") {
11 | }
12 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/composite-build/proj1/src/test/scala/org/composite/proj1/FooSuite.scala:
--------------------------------------------------------------------------------
1 | package org.composite.proj1
2 |
3 | import org.scalatest.FunSuite
4 | import org.junit.runner.RunWith
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class FooSuite extends FunSuite {
9 |
10 | test("bar"){
11 |
12 | new Foo().bar()
13 | }
14 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/multiple-check-tasks/multiple-checks/src/test/scala/org/hello/WorldSuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class WorldSuite extends FunSuite {
9 |
10 | test("foo") {
11 | new World().foo()
12 | }
13 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/multiple-check-tasks/old-and-new-syntax/src/test/scala/org/hello/WorldSuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class WorldSuite extends FunSuite {
9 |
10 | test("foo") {
11 | new World().foo()
12 | }
13 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module-multiple-test-tasks/src/intTest/scala/org/hello/TestNothingSuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class TestNothingSuite extends FunSuite {
9 |
10 | test("nothing") {
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module/common/src/test/scala/org/hello/common/TestNothingCommonSuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello.common
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class TestNothingCommonSuite extends FunSuite {
9 |
10 | test("nothing") {
11 | }
12 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-single-module-dependency-manager/src/test/scala/org/hello/WorldSuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class WorldSuite extends FunSuite {
9 |
10 | test("foo") {
11 | new World().foo()
12 | }
13 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-single-module-multiple-test-tasks/src/test/scala/org/hello/WorldSuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class WorldSuite extends FunSuite {
9 |
10 | test("foo") {
11 | new World().foo()
12 | }
13 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/detect-scala-library/compile/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.scoverage'
3 | }
4 |
5 | repositories {
6 | mavenCentral()
7 | }
8 |
9 | description = 'defines scala library using the "implementation" configuration'
10 |
11 | dependencies {
12 | implementation group: 'org.scala-lang', name: 'scala-library', version: "${detectedScalaLibraryVersion}"
13 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/detect-scala-library/compileOnly/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.scoverage'
3 | }
4 |
5 | repositories {
6 | mavenCentral()
7 | }
8 |
9 | description = 'defines scala library using the "compileOnly" configuration'
10 |
11 | dependencies {
12 | compileOnly group: 'org.scala-lang', name: 'scala-library', version: "${detectedScalaLibraryVersion}"
13 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/multiple-check-tasks/single-check-new-syntax/src/test/scala/org/hello/WorldSuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class WorldSuite extends FunSuite {
9 |
10 | test("foo") {
11 | new World().foo()
12 | }
13 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/multiple-check-tasks/single-check-old-syntax/src/test/scala/org/hello/WorldSuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class WorldSuite extends FunSuite {
9 |
10 | test("foo") {
11 | new World().foo()
12 | }
13 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module-multiple-test-tasks/a/src/test/scala/org/hello/a/TestNothingASuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello.a
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class TestNothingASuite extends FunSuite {
9 |
10 | test("nothing") {
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module-multiple-test-tasks/b/src/test/scala/org/hello/b/TestNothingBSuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello.b
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class TestNothingBSuite extends FunSuite {
9 |
10 | test("nothing") {
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module-multiple-test-tasks/src/test/scala/org/hello/WorldSuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class WorldSuite extends FunSuite {
9 |
10 | test("foo") {
11 | new World().foo()
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-single-module-multiple-test-tasks/src/intTest/scala/org/hello/WorldIntSuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class WorldIntSuite extends FunSuite {
9 |
10 | test("bar") {
11 | new World().bar()
12 | }
13 | }
--------------------------------------------------------------------------------
/src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/2_13/src/test/scala/org/hello/World2_13Suite.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class World212Suite extends FunSuite {
9 |
10 | test("foo") {
11 | new World2_13().foo()
12 | }
13 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/detect-scala-library/implementation/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.scoverage'
3 | }
4 |
5 | repositories {
6 | mavenCentral()
7 | }
8 |
9 | description = 'defines scala library using the "implementation" configuration'
10 |
11 | dependencies {
12 | implementation group: 'org.scala-lang', name: 'scala-library', version: "${detectedScalaLibraryVersion}"
13 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-java-multi-module/mixed_scala_java/src/test/scala/org/hello/WorldScalaSuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class WorldScalaSuite extends FunSuite {
9 |
10 | test("foo") {
11 | new WorldScala().foo()
12 | }
13 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module-multiple-test-tasks/a/src/test/scala/org/hello/a/WorldASuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello.a
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class WorldASuite extends FunSuite {
9 |
10 | test("fooA") {
11 | new WorldA().fooA()
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module-multiple-test-tasks/b/src/test/scala/org/hello/b/WorldBSuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello.b
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class WorldBSuite extends FunSuite {
9 |
10 | test("fooB") {
11 | new WorldB().fooB()
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module-multiple-test-tasks/src/intTest/scala/org/hello/WorldIntSuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class WorldIntSuite extends FunSuite {
9 |
10 | test("bar") {
11 | new World().bar()
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/2_12/src/test/scala/org/hello/World2_12Suite.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class World2_12Suite extends FunSuite {
9 |
10 | test("foo") {
11 | new World2_12().foo()
12 | }
13 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-java-multi-module/scala_only/src/test/scala/org/hello/WorldScalaOnlySuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class WorldScalaOnlySuite extends FunSuite {
9 |
10 | test("foo") {
11 | new WorldScalaOnly().foo()
12 | }
13 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module-multiple-test-tasks/a/src/intTest/scala/org/hello/a/WorldAIntSuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello.a
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class WorldAIntSuite extends FunSuite {
9 |
10 | test("barA") {
11 | new WorldA().barA()
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module-multiple-test-tasks/b/src/intTest/scala/org/hello/b/WorldBIntSuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello.b
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class WorldBIntSuite extends FunSuite {
9 |
10 | test("barB") {
11 | new WorldB().barB()
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/composite-build/proj2/src/main/scala/org/composite/proj2/Reporter.scala:
--------------------------------------------------------------------------------
1 | package org.composite.proj2
2 |
3 | class Reporter {
4 |
5 | def report(rawData: String): Report = {
6 | Report(1,2)
7 | }
8 |
9 | class InnerReporter {
10 |
11 | def lala(): Unit = {
12 |
13 | val x = 1 + 1
14 | x
15 | }
16 | }
17 | }
18 |
19 | case class Report(id: Long, count: Int)
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-java-annotation-processor/mixed_scala_java/src/test/scala/org/hello/WorldScalaSuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class WorldScalaSuite extends FunSuite {
9 |
10 | test("foo") {
11 | new WorldScala().foo()
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module-multiple-test-tasks/a/src/main/scala/org/hello/a/WorldA.scala:
--------------------------------------------------------------------------------
1 | package org.hello.a
2 |
3 | import org.hello.common.WorldCommon
4 |
5 | class WorldA {
6 |
7 | def fooA(): String = {
8 | val s = "a" + new WorldCommon().fooCommon()
9 | s
10 | }
11 |
12 | def barA(): String = {
13 | val s = "a" + new WorldCommon().fooCommon()
14 | s
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module-multiple-test-tasks/b/src/main/scala/org/hello/b/WorldB.scala:
--------------------------------------------------------------------------------
1 | package org.hello.b
2 |
3 | import org.hello.common.WorldCommon
4 |
5 | class WorldB {
6 |
7 | def fooB(): String = {
8 | val s = "b" + new WorldCommon().fooCommon()
9 | s
10 | }
11 |
12 | def barB(): String = {
13 | val s = "b" + new WorldCommon().fooCommon()
14 | s
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module-multiple-test-tasks/common/src/test/scala/org/hello/common/TestNothingCommonSuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello.common
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class TestNothingCommonSuite extends FunSuite {
9 |
10 | test("nothing") {
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module/common/src/test/scala/org/hello/common/WorldCommonSuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello.common
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class WorldCommonSuite extends FunSuite {
9 |
10 | test("fooCommon") {
11 | new WorldCommon().fooCommon()
12 | }
13 | }
--------------------------------------------------------------------------------
/src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/3_2/src/test/scala/org/hello/World3_2Suite.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.funsuite.AnyFunSuite
5 | import org.scalatestplus.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class World3_2Suite extends AnyFunSuite {
9 |
10 | test("foo") {
11 | new World3_2().foo()
12 | }
13 | }
--------------------------------------------------------------------------------
/src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/3_2/src/main/scala/org/hello/World3_2.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | class World3_2 {
4 |
5 | // Scala 3 enum to force Scala 3 (Dotty) compiler
6 | enum Num(val value: String):
7 | case Three extends Num("3")
8 | case Two extends Num("2")
9 |
10 | def foo(): String = {
11 | val s = Num.Three.value + Num.Two.value
12 | s
13 | }
14 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/multi-module-plugin-not-configured-for-scala/scala_only/src/test/scala/org/hello/WorldScalaOnlySuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class WorldScalaOnlySuite extends FunSuite {
9 |
10 | test("foo") {
11 | new WorldScalaOnly().foo()
12 | }
13 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module-multiple-test-tasks/common/src/test/scala/org/hello/common/WorldCommonSuite.scala:
--------------------------------------------------------------------------------
1 | package org.hello.common
2 |
3 | import org.junit.runner.RunWith
4 | import org.scalatest.FunSuite
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class WorldCommonSuite extends FunSuite {
9 |
10 | test("fooCommon") {
11 | new WorldCommon().fooCommon()
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/composite-build/proj2/src/test/scala/org/composite/proj2/ReporterSuite.scala:
--------------------------------------------------------------------------------
1 | package org.composite.proj2
2 |
3 | import org.scalatest.FunSuite
4 | import org.junit.runner.RunWith
5 | import org.scalatest.junit.JUnitRunner
6 |
7 | @RunWith(classOf[JUnitRunner])
8 | class ReporterSuite extends FunSuite {
9 |
10 | test("report"){
11 |
12 | val report = new Reporter().report("x")
13 |
14 | assertResult(Report(1, 2))(report)
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/multi-module-plugin-not-configured-for-scala/scala_only/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'scala'
2 | // apply plugin: 'org.scoverage' // Oops forgot to configure scoverage
3 |
4 | dependencies {
5 | implementation group: 'org.scala-lang', name: 'scala-library'
6 |
7 | testRuntimeOnly group: 'org.junit.vintage', name: 'junit-vintage-engine'
8 | testImplementation group: 'org.scalatest', name: "scalatest_${scalaVersionMajor}.${scalaVersionMinor}"
9 | }
10 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-java-multi-module/scala_only/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'scala'
2 |
3 | dependencies {
4 | implementation group: 'org.scala-lang', name: 'scala-library', version: "${scalaVersionMajor}.${scalaVersionMinor}.${scalaVersionBuild}"
5 |
6 | testRuntimeOnly group: 'org.junit.vintage', name: 'junit-vintage-engine', version: junitVersion
7 |
8 | testImplementation group: 'org.scalatest', name: "scalatest_${scalaVersionMajor}.${scalaVersionMinor}", version: scalatestVersion
9 | }
10 |
11 | apply plugin: 'org.scoverage'
12 | scoverage {
13 | minimumRate = 0.5
14 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-java-annotation-processor/mixed_scala_java/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'scala'
2 |
3 | dependencies {
4 | implementation group: 'org.scala-lang', name: 'scala-library', version: "${scalaVersionMajor}.${scalaVersionMinor}.${scalaVersionBuild}"
5 |
6 | testRuntimeOnly group: 'org.junit.vintage', name: 'junit-vintage-engine', version: junitVersion
7 |
8 | testImplementation group: 'org.scalatest', name: "scalatest_${scalaVersionMajor}.${scalaVersionMinor}", version: scalatestVersion
9 | }
10 |
11 | apply plugin: 'org.scoverage'
12 | scoverage {
13 | minimumRate = 0.5
14 | }
15 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/detect-scala-library/dependency-management/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'io.spring.dependency-management' version "1.1.5"
3 | id 'org.scoverage'
4 | }
5 |
6 | repositories {
7 | mavenCentral()
8 | }
9 |
10 | description = 'defines scala library using the "implementation" configuration and the dependency-management plugin'
11 |
12 | dependencyManagement {
13 | dependencies {
14 | dependency group: 'org.scala-lang', name: 'scala-library', version: "${detectedScalaLibraryVersion}"
15 | }
16 | }
17 |
18 | dependencies {
19 | implementation group: 'org.scala-lang', name: 'scala-library'
20 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module/dependencies/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'java-platform'
3 | }
4 |
5 | dependencies {
6 | constraints {
7 | api group: 'org.scala-lang', name: 'scala-library', version: "${scalaVersionMajor}.${scalaVersionMinor}.${scalaVersionBuild}"
8 |
9 | api group: 'org.junit.vintage', name: 'junit-vintage-engine', version: junitVersion
10 | api group: 'org.junit.platform', name: 'junit-platform-runner', version: junitPlatformVersion
11 |
12 | api group: 'org.scalatest', name: "scalatest_${scalaVersionMajor}.${scalaVersionMinor}", version: scalatestVersion
13 | }
14 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/detect-scala-library/gradle-consistent-versions/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id "com.palantir.consistent-versions" version "1.28.0"
3 | id 'org.scoverage'
4 | }
5 |
6 | repositories {
7 | mavenCentral()
8 | }
9 |
10 | description = 'defines scala library using the "implementation" configuration and the gradle-consistent-versions plugin'
11 |
12 | dependencies {
13 | implementation group: 'org.scala-lang', name: 'scala-library'
14 | }
15 |
16 | scoverage {
17 | // 'detectedScalaLibraryVersion' is set by the test `DetectScalaLibraryTest.java`
18 | scoverageScalaVersion = detectedScalaLibraryVersion
19 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/multi-module-plugin-not-configured-for-scala/dependencies/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'java-platform'
3 | }
4 |
5 | dependencies {
6 | constraints {
7 | api group: 'org.scala-lang', name: 'scala-library', version: "${scalaVersionMajor}.${scalaVersionMinor}.${scalaVersionBuild}"
8 |
9 | api group: 'org.junit.vintage', name: 'junit-vintage-engine', version: junitVersion
10 | api group: 'org.junit.platform', name: 'junit-platform-runner', version: junitPlatformVersion
11 |
12 | api group: 'org.scalatest', name: "scalatest_${scalaVersionMajor}.${scalaVersionMinor}", version: scalatestVersion
13 | }
14 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-java-multi-module/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.scoverage' apply false
3 | }
4 |
5 | description = 'a multi-module Scala and Java project that builds successfully with 100% coverage'
6 |
7 | allprojects {
8 | repositories {
9 | mavenCentral()
10 | }
11 | }
12 |
13 | subprojects {
14 | apply plugin: 'java'
15 |
16 | dependencies {
17 | testImplementation group: 'org.junit.platform', name: 'junit-platform-runner', version: junitPlatformVersion
18 | }
19 |
20 | test {
21 | useJUnitPlatform()
22 | }
23 | }
24 |
25 | apply plugin: 'org.scoverage'
26 | scoverage {
27 | minimumRate = 0.5
28 | }
--------------------------------------------------------------------------------
/src/functionalTest/java/org/scoverage/ScalaMultiModuleWithPartialScoverageUseTest.java:
--------------------------------------------------------------------------------
1 | package org.scoverage;
2 |
3 | import org.junit.Test;
4 |
5 | public class ScalaMultiModuleWithPartialScoverageUseTest extends ScoverageFunctionalTest {
6 |
7 | public ScalaMultiModuleWithPartialScoverageUseTest() {
8 | super("scala-multi-module-with-partial-scoverage-use");
9 | }
10 |
11 | @Test
12 | public void reportScoverage() {
13 |
14 | AssertableBuildResult result = dryRun("clean", ScoveragePlugin.getREPORT_NAME());
15 |
16 | result.assertTaskExists(ScoveragePlugin.getREPORT_NAME());
17 | result.assertTaskExists("b:" + ScoveragePlugin.getREPORT_NAME());
18 | }
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/multi-module-plugin-not-configured-for-scala/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.scoverage' apply false
3 | }
4 |
5 | description = 'a multi-module Scala and Java project that defines scoverage only on root but not on subprojects'
6 |
7 | allprojects {
8 | repositories {
9 | mavenCentral()
10 | }
11 | }
12 |
13 | subprojects { p ->
14 | if (p.name != 'dependencies') {
15 | apply plugin: 'java'
16 | dependencies {
17 | implementation platform(project(':dependencies'))
18 | testImplementation group: 'org.junit.platform', name: 'junit-platform-runner'
19 | }
20 |
21 | test {
22 | useJUnitPlatform()
23 | }
24 | }
25 | }
26 |
27 | apply plugin: 'org.scoverage'
28 | scoverage {
29 | minimumRate = 0.5
30 | }
--------------------------------------------------------------------------------
/src/test/resources/checkTask/cobertura.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/multiple-check-tasks/no-check/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.scoverage'
3 | }
4 |
5 | repositories {
6 | mavenCentral()
7 | }
8 |
9 | description = 'a single-module Scala project with no check configured'
10 |
11 | apply plugin: 'java'
12 | apply plugin: 'scala'
13 |
14 | dependencies {
15 | implementation group: 'org.scala-lang', name: 'scala-library', version: "${scalaVersionMajor}.${scalaVersionMinor}.${scalaVersionBuild}"
16 |
17 | testRuntimeOnly group: 'org.junit.vintage', name: 'junit-vintage-engine', version: junitVersion
18 | testImplementation group: 'org.junit.platform', name: 'junit-platform-runner', version: junitPlatformVersion
19 |
20 | testImplementation group: 'org.scalatest', name: "scalatest_${scalaVersionMajor}.${scalaVersionMinor}", version: scalatestVersion
21 | }
22 |
23 | test {
24 | useJUnitPlatform()
25 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-java-multi-module/mixed_scala_java/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'scala'
2 |
3 | dependencies {
4 | implementation group: 'org.scala-lang', name: 'scala-library', version: "${scalaVersionMajor}.${scalaVersionMinor}.${scalaVersionBuild}"
5 |
6 | testRuntimeOnly group: 'org.junit.vintage', name: 'junit-vintage-engine', version: junitVersion
7 |
8 | testImplementation group: 'org.scalatest', name: "scalatest_${scalaVersionMajor}.${scalaVersionMinor}", version: scalatestVersion
9 | }
10 |
11 | // A common practice in mixed java/scala modules to make Java code able to import Scala code
12 | ext.configureSources = { set, name ->
13 | set.scala.srcDir("src/$name/java")
14 | set.java.srcDirs = []
15 | }
16 | configureSources(sourceSets.main, 'main')
17 | configureSources(sourceSets.test, 'test')
18 |
19 | apply plugin: 'org.scoverage'
20 | scoverage {
21 | minimumRate = 0.5
22 | }
--------------------------------------------------------------------------------
/src/crossScalaVersionTest/resources/projects/scala-multi-module-cross-version/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.scoverage' apply false
3 | }
4 |
5 | allprojects {
6 | repositories {
7 | mavenCentral()
8 | }
9 | }
10 |
11 | description = 'a multi-module Scala project with multiple Scala versions that builds successfully with 100% coverage'
12 |
13 | allprojects {
14 |
15 | apply plugin: 'java'
16 | apply plugin: 'scala'
17 | apply plugin: 'org.scoverage'
18 |
19 | dependencies {
20 | testRuntimeOnly group: 'org.junit.vintage', name: 'junit-vintage-engine', version: junitVersion
21 | testImplementation group: 'org.junit.platform', name: 'junit-platform-runner', version: junitPlatformVersion
22 | }
23 |
24 | test {
25 | useJUnitPlatform()
26 | }
27 |
28 | scoverage {
29 | minimumRate = 0.5
30 | }
31 | }
32 |
33 | scoverage {
34 | minimumRate = 0.5
35 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/composite-build/proj2/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.scoverage'
3 | }
4 |
5 | repositories {
6 | mavenCentral()
7 | }
8 |
9 | description = 'a single-module Scala project taking part in a composite build (2)'
10 |
11 | apply plugin: 'java'
12 | apply plugin: 'scala'
13 |
14 |
15 | group "org.composite"
16 | version '1.0'
17 |
18 | dependencies {
19 | implementation group: 'org.scala-lang', name: 'scala-library', version: "${scalaVersionMajor}.${scalaVersionMinor}.${scalaVersionBuild}"
20 |
21 | testRuntimeOnly group: 'org.junit.vintage', name: 'junit-vintage-engine', version: junitVersion
22 | testImplementation group: 'org.junit.platform', name: 'junit-platform-runner', version: junitPlatformVersion
23 |
24 | testImplementation group: 'org.scalatest', name: "scalatest_${scalaVersionMajor}.${scalaVersionMinor}", version: scalatestVersion
25 | }
26 |
27 | test {
28 | useJUnitPlatform()
29 | }
30 |
31 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/composite-build/proj1/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.scoverage'
3 | }
4 |
5 | repositories {
6 | mavenCentral()
7 | }
8 |
9 | description = 'a single-module Scala project taking part in a composite build (1)'
10 |
11 | apply plugin: 'java'
12 | apply plugin: 'scala'
13 |
14 |
15 | group "org.composite"
16 | version '1.0'
17 |
18 | dependencies {
19 | implementation group: 'org.scala-lang', name: 'scala-library', version: "${scalaVersionMajor}.${scalaVersionMinor}.${scalaVersionBuild}"
20 |
21 | testRuntimeOnly group: 'org.junit.vintage', name: 'junit-vintage-engine', version: junitVersion
22 | testImplementation group: 'org.junit.platform', name: 'junit-platform-runner', version: junitPlatformVersion
23 |
24 | testImplementation group: 'org.scalatest', name: "scalatest_${scalaVersionMajor}.${scalaVersionMinor}", version: scalatestVersion
25 |
26 | implementation "org.composite:proj2:1.0"
27 | }
28 |
29 | test {
30 | useJUnitPlatform()
31 | }
32 |
33 |
--------------------------------------------------------------------------------
/src/main/groovy/org/scoverage/ScoverageRunner.groovy:
--------------------------------------------------------------------------------
1 | package org.scoverage
2 |
3 | import org.gradle.api.file.FileCollection
4 | import org.gradle.api.tasks.Classpath
5 |
6 | import java.lang.reflect.Method
7 |
8 | class ScoverageRunner {
9 |
10 | @Classpath
11 | final FileCollection runtimeClasspath
12 |
13 | ScoverageRunner(FileCollection runtimeClasspath) {
14 |
15 | this.runtimeClasspath = runtimeClasspath
16 | }
17 |
18 | def run(Closure> action) {
19 |
20 | URLClassLoader cloader = (URLClassLoader) Thread.currentThread().getContextClassLoader()
21 |
22 | Method method = URLClassLoader.class.getDeclaredMethod("addURL", URL.class)
23 | method.setAccessible(true)
24 |
25 | runtimeClasspath.files.each { f ->
26 | def url = f.toURI().toURL()
27 | if (!cloader.getURLs().contains(url)) {
28 | method.invoke(cloader, url)
29 | }
30 | }
31 |
32 | action.call()
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module-with-partial-scoverage-use/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.scoverage' apply false
3 | }
4 |
5 | description = 'a multi-module Scala project that builds successfully and has modules which does not use scoverate plugin'
6 |
7 | allprojects { p ->
8 | repositories {
9 | mavenCentral()
10 | }
11 |
12 | apply plugin: 'java'
13 | apply plugin: 'scala'
14 |
15 | if (p.name != 'a') {
16 | apply plugin: 'org.scoverage'
17 | }
18 |
19 | dependencies {
20 |
21 | implementation group: 'org.scala-lang', name: 'scala-library', version: "${scalaVersionMajor}.${scalaVersionMinor}.${scalaVersionBuild}"
22 |
23 | testImplementation group: 'org.junit.platform', name: 'junit-platform-runner'
24 |
25 | testImplementation group: 'org.scalatest', name: "scalatest_${scalaVersionMajor}.${scalaVersionMinor}"
26 | }
27 | }
28 |
29 | dependencies {
30 | implementation project(':a')
31 | implementation project(':b')
32 | }
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/multiple-check-tasks/single-check-old-syntax/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.scoverage'
3 | }
4 |
5 | repositories {
6 | mavenCentral()
7 | }
8 |
9 | description = 'a single-module Scala project that has a single check configurations (with the old syntax)'
10 |
11 | apply plugin: 'java'
12 | apply plugin: 'scala'
13 |
14 | dependencies {
15 | implementation group: 'org.scala-lang', name: 'scala-library', version: "${scalaVersionMajor}.${scalaVersionMinor}.${scalaVersionBuild}"
16 |
17 | testRuntimeOnly group: 'org.junit.vintage', name: 'junit-vintage-engine', version: junitVersion
18 | testImplementation group: 'org.junit.platform', name: 'junit-platform-runner', version: junitPlatformVersion
19 |
20 | testImplementation group: 'org.scalatest', name: "scalatest_${scalaVersionMajor}.${scalaVersionMinor}", version: scalatestVersion
21 | }
22 |
23 | test {
24 | useJUnitPlatform()
25 | }
26 |
27 | scoverage {
28 | minimumRate = 0.3
29 | coverageType = org.scoverage.CoverageType.Line
30 | }
31 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/multiple-check-tasks/single-check-new-syntax/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.scoverage'
3 | }
4 |
5 | repositories {
6 | mavenCentral()
7 | }
8 |
9 | description = 'a single-module Scala project that has a single check configurations (with the new syntax)'
10 |
11 | apply plugin: 'java'
12 | apply plugin: 'scala'
13 |
14 | dependencies {
15 | implementation group: 'org.scala-lang', name: 'scala-library', version: "${scalaVersionMajor}.${scalaVersionMinor}.${scalaVersionBuild}"
16 |
17 | testRuntimeOnly group: 'org.junit.vintage', name: 'junit-vintage-engine', version: junitVersion
18 | testImplementation group: 'org.junit.platform', name: 'junit-platform-runner', version: junitPlatformVersion
19 |
20 | testImplementation group: 'org.scalatest', name: "scalatest_${scalaVersionMajor}.${scalaVersionMinor}", version: scalatestVersion
21 | }
22 |
23 | test {
24 | useJUnitPlatform()
25 | }
26 |
27 | scoverage {
28 | check {
29 | minimumRate = 0.3
30 | coverageType = org.scoverage.CoverageType.Line
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.scoverage' apply false
3 | }
4 |
5 | description = 'a multi-module Scala project that builds successfully with 100% coverage'
6 |
7 | allprojects { p ->
8 | repositories {
9 | mavenCentral()
10 | }
11 |
12 | if (p.name != 'dependencies') {
13 | apply plugin: 'java'
14 | apply plugin: 'scala'
15 | apply plugin: 'org.scoverage'
16 |
17 | dependencies {
18 | implementation platform(project(':dependencies'))
19 |
20 | implementation group: 'org.scala-lang', name: 'scala-library'
21 |
22 | testRuntimeOnly group: 'org.junit.vintage', name: 'junit-vintage-engine'
23 | testImplementation group: 'org.junit.platform', name: 'junit-platform-runner'
24 |
25 | testImplementation group: 'org.scalatest', name: "scalatest_${scalaVersionMajor}.${scalaVersionMinor}"
26 | }
27 |
28 | test {
29 | useJUnitPlatform()
30 | }
31 |
32 | scoverage {
33 | minimumRate = 0.5
34 | }
35 | }
36 | }
--------------------------------------------------------------------------------
/src/functionalTest/java/org/scoverage/ScalaVersionArguments.java:
--------------------------------------------------------------------------------
1 | package org.scoverage;
2 |
3 | import java.util.Arrays;
4 | import java.util.List;
5 |
6 | public interface ScalaVersionArguments {
7 | List version2WithLegacyScalatest = Arrays.asList(
8 | "-PscalaVersionMajor=2",
9 | "-PscalaVersionMinor=13",
10 | "-PscalaVersionBuild=14",
11 | "-PjunitVersion=5.3.2",
12 | "-PjunitPlatformVersion=1.3.2",
13 | "-PscalatestVersion=3.0.8"
14 | );
15 |
16 | List version2 = Arrays.asList(
17 | "-PscalaVersionMajor=2",
18 | "-PscalaVersionMinor=13",
19 | "-PscalaVersionBuild=14",
20 | "-PjunitVersion=5.3.2",
21 | "-PjunitPlatformVersion=1.3.2",
22 | "-PscalatestVersion=3.2.16"
23 | );
24 |
25 | List version3 = Arrays.asList(
26 | "-PscalaVersionMajor=3",
27 | "-PscalaVersionMinor=4",
28 | "-PscalaVersionBuild=2",
29 | "-PjunitVersion=5.3.2",
30 | "-PjunitPlatformVersion=1.3.2",
31 | "-PscalatestVersion=3.2.16"
32 | );
33 | }
34 |
--------------------------------------------------------------------------------
/src/functionalTest/java/org/scoverage/ScalaSingleModuleWithDependencyManagerTest.java:
--------------------------------------------------------------------------------
1 | package org.scoverage;
2 |
3 | import org.junit.Assert;
4 | import org.junit.Test;
5 |
6 | public class ScalaSingleModuleWithDependencyManagerTest extends ScoverageFunctionalTest {
7 |
8 | public ScalaSingleModuleWithDependencyManagerTest() {
9 | super("scala-single-module-dependency-manager");
10 | }
11 |
12 | @Test
13 | public void checkScoverage() throws Exception {
14 |
15 | AssertableBuildResult result = run("clean", ScoveragePlugin.getCHECK_NAME());
16 |
17 | result.assertTaskSucceeded(ScoveragePlugin.getCOMPILE_NAME());
18 | result.assertTaskSucceeded(ScoveragePlugin.getREPORT_NAME());
19 | result.assertTaskSucceeded(ScoveragePlugin.getCHECK_NAME());
20 | result.assertTaskDoesntExist(ScoveragePlugin.getAGGREGATE_NAME());
21 |
22 | assertReportFilesExist();
23 | assertCoverage(100.0);
24 | }
25 |
26 | private void assertReportFilesExist() {
27 |
28 | Assert.assertTrue(resolve(reportDir(), "index.html").exists());
29 | Assert.assertTrue(resolve(reportDir(), "org/hello/World.scala.html").exists());
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-single-module-dependency-manager/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'io.spring.dependency-management' version "1.1.5"
3 | id 'org.scoverage'
4 | }
5 |
6 | repositories {
7 | mavenCentral()
8 | }
9 |
10 | description = 'a single-module Scala project with dependency manager that builds successfully with 100% coverage'
11 |
12 | apply plugin: 'java'
13 | apply plugin: 'scala'
14 |
15 |
16 | dependencyManagement {
17 | dependencies {
18 | dependency group: 'org.scala-lang', name: 'scala-library', version: "${scalaVersionMajor}.${scalaVersionMinor}.${scalaVersionBuild}"
19 | }
20 | }
21 |
22 | dependencies {
23 | implementation group: 'org.scala-lang', name: 'scala-library'
24 |
25 | testRuntimeOnly group: 'org.junit.vintage', name: 'junit-vintage-engine', version: junitVersion
26 | testImplementation group: 'org.junit.platform', name: 'junit-platform-runner', version: junitPlatformVersion
27 |
28 | testImplementation group: 'org.scalatest', name: "scalatest_${scalaVersionMajor}.${scalaVersionMinor}", version: scalatestVersion
29 | }
30 |
31 | test {
32 | useJUnitPlatform()
33 | }
34 |
35 | scoverage {
36 | minimumRate = 0.3
37 | }
38 |
39 |
--------------------------------------------------------------------------------
/.github/workflows/gradle.yml:
--------------------------------------------------------------------------------
1 | # This workflow will build a Java project with Gradle
2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle
3 |
4 | name: Java CI with Gradle
5 |
6 | on:
7 | push:
8 | branches: [ master ]
9 | pull_request:
10 | branches: [ master ]
11 |
12 | jobs:
13 | build:
14 | strategy:
15 | fail-fast: false
16 | matrix:
17 | include:
18 | - name: 'ignore warnings'
19 | additional-check-args: ''
20 | continue-on-error: false
21 | - name: 'fail on warning'
22 | additional-check-args: '--warning-mode=fail -PfailOnWarning'
23 | continue-on-error: true
24 |
25 | runs-on: ubuntu-latest
26 | continue-on-error: ${{ matrix.continue-on-error }}
27 |
28 | steps:
29 | - uses: actions/checkout@v2
30 | - name: Set up JDK 11
31 | uses: actions/setup-java@v2
32 | with:
33 | java-version: '11'
34 | distribution: 'adopt'
35 | - name: Grant execute permission for gradlew
36 | run: chmod +x gradlew
37 | - name: Build with Gradle
38 | run: ./gradlew --info --stacktrace check ${{ matrix.additional-check-args }}
39 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/multiple-check-tasks/old-and-new-syntax/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.scoverage'
3 | }
4 |
5 | repositories {
6 | mavenCentral()
7 | }
8 |
9 | description = 'a single-module Scala project that has multiple check configurations - some new syntax, some old'
10 |
11 | apply plugin: 'java'
12 | apply plugin: 'scala'
13 |
14 | dependencies {
15 | implementation group: 'org.scala-lang', name: 'scala-library', version: "${scalaVersionMajor}.${scalaVersionMinor}.${scalaVersionBuild}"
16 |
17 | testRuntimeOnly group: 'org.junit.vintage', name: 'junit-vintage-engine', version: junitVersion
18 | testImplementation group: 'org.junit.platform', name: 'junit-platform-runner', version: junitPlatformVersion
19 |
20 | testImplementation group: 'org.scalatest', name: "scalatest_${scalaVersionMajor}.${scalaVersionMinor}", version: scalatestVersion
21 | }
22 |
23 | test {
24 | useJUnitPlatform()
25 | }
26 |
27 | scoverage {
28 | minimumRate = 0.3
29 | coverageType = org.scoverage.CoverageType.Line
30 | check {
31 | minimumRate = 0.1
32 | coverageType = org.scoverage.CoverageType.Branch
33 | }
34 | check {
35 | minimumRate = 0.6
36 | coverageType = org.scoverage.CoverageType.Statement
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/multiple-check-tasks/multiple-checks/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.scoverage'
3 | }
4 |
5 | repositories {
6 | mavenCentral()
7 | }
8 |
9 | description = 'a single-module Scala project that has multiple check configurations'
10 |
11 | apply plugin: 'java'
12 | apply plugin: 'scala'
13 |
14 | dependencies {
15 | implementation group: 'org.scala-lang', name: 'scala-library', version: "${scalaVersionMajor}.${scalaVersionMinor}.${scalaVersionBuild}"
16 |
17 | testRuntimeOnly group: 'org.junit.vintage', name: 'junit-vintage-engine', version: junitVersion
18 | testImplementation group: 'org.junit.platform', name: 'junit-platform-runner', version: junitPlatformVersion
19 |
20 | testImplementation group: 'org.scalatest', name: "scalatest_${scalaVersionMajor}.${scalaVersionMinor}", version: scalatestVersion
21 | }
22 |
23 | test {
24 | useJUnitPlatform()
25 | }
26 |
27 | scoverage {
28 | check {
29 | minimumRate = 0.3
30 | coverageType = org.scoverage.CoverageType.Line
31 | }
32 | check {
33 | minimumRate = 0.1
34 | coverageType = org.scoverage.CoverageType.Branch
35 | }
36 | check {
37 | minimumRate = 0.6
38 | coverageType = org.scoverage.CoverageType.Statement
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/functionalTest/java/org/scoverage/CompositeBuildTest.java:
--------------------------------------------------------------------------------
1 | package org.scoverage;
2 |
3 | import org.junit.Ignore;
4 | import org.junit.Test;
5 |
6 | import java.util.ArrayList;
7 | import java.util.Arrays;
8 | import java.util.List;
9 |
10 | /**
11 | * Tests are currently ignored as composite builds are not supported yet.
12 | *
13 | * @see Issue #94.
14 | */
15 | public class CompositeBuildTest extends ScoverageFunctionalTest {
16 |
17 | public CompositeBuildTest() {
18 | super("composite-build");
19 | }
20 |
21 | @Test
22 | public void buildComposite() {
23 |
24 | runComposite("clean", "build");
25 | }
26 |
27 | @Test
28 | public void reportComposite() {
29 |
30 | runComposite("clean", ScoveragePlugin.getREPORT_NAME());
31 | }
32 |
33 | private AssertableBuildResult runComposite(String... arguments) {
34 |
35 | List fullArguments = new ArrayList<>();
36 | fullArguments.add("-p");
37 | fullArguments.add("proj1");
38 | fullArguments.add("--include-build");
39 | fullArguments.add("../proj2");
40 | fullArguments.addAll(Arrays.asList(arguments));
41 |
42 | return run(fullArguments.toArray(new String[0]));
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/crossScalaVersionTest/java/org/scoverage/ScalaVersionTest.java:
--------------------------------------------------------------------------------
1 | package org.scoverage;
2 |
3 | import org.junit.Assert;
4 | import org.junit.Test;
5 |
6 | import java.io.File;
7 |
8 | /**
9 | * This abstract class is used to test each scala version in an individual class.
10 | * It is crucial that each test will be separated into its own class,
11 | * as this is the only way to run these tests in separate JVM processes (via `forkEvery` gradle configuration).
12 | */
13 | public abstract class ScalaVersionTest extends ScoverageFunctionalTest {
14 |
15 | private final String scalaVersion;
16 |
17 | public ScalaVersionTest(String scalaVersion) {
18 | super("scala-multi-module-cross-version");
19 | this.scalaVersion = scalaVersion;
20 | }
21 |
22 | @Test
23 | public void report() throws Exception {
24 |
25 | AssertableBuildResult result = run("clean", ":" + scalaVersion + ":" + ScoveragePlugin.getREPORT_NAME());
26 | result.assertTaskSucceeded(scalaVersion + ":" + ScoveragePlugin.getREPORT_NAME());
27 |
28 | File reportDir = reportDir(projectDir().toPath().resolve(scalaVersion).toFile());
29 | Assert.assertTrue(resolve(reportDir, "index.html").exists());
30 | Assert.assertTrue(resolve(reportDir, "org/hello/World" + scalaVersion + ".scala.html").exists());
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/groovy/org/scoverage/ScalaVersion.groovy:
--------------------------------------------------------------------------------
1 | package org.scoverage
2 |
3 | class ScalaVersion {
4 | final String primaryVersion
5 | final Optional secondaryVersion
6 | final Integer majorVersion
7 | final String scalacScoverageVersion
8 | final String scalacScoveragePluginVersion
9 | final String scalacScoverageRuntimeVersion
10 |
11 | ScalaVersion(primaryVersion) {
12 | this(primaryVersion, Optional.empty())
13 | }
14 |
15 | ScalaVersion(String primaryVersion, Optional secondaryVersion) {
16 | this.primaryVersion = primaryVersion
17 | this.secondaryVersion = secondaryVersion
18 |
19 | this.majorVersion = primaryVersion.substring(0, primaryVersion.indexOf('.')).toInteger()
20 | this.scalacScoverageVersion = this.majorVersion < 3
21 | ? primaryVersion.substring(0, primaryVersion.lastIndexOf('.'))
22 | : this.majorVersion.toString()
23 | this.scalacScoveragePluginVersion = secondaryVersion.orElse(primaryVersion)
24 | this.scalacScoverageRuntimeVersion = scalacScoveragePluginVersion.substring(0, scalacScoveragePluginVersion.lastIndexOf('.'))
25 | }
26 |
27 | @Override
28 | String toString() {
29 | return majorVersion < 3 ? primaryVersion : "$primaryVersion (${secondaryVersion.get()})"
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/crossScalaVersionTest/java/org/scoverage/ScalaCrossVersionAggregationTest.java:
--------------------------------------------------------------------------------
1 | package org.scoverage;
2 |
3 | import org.junit.Assert;
4 | import org.junit.Test;
5 |
6 | public class ScalaCrossVersionAggregationTest extends ScoverageFunctionalTest {
7 |
8 | public ScalaCrossVersionAggregationTest() {
9 | super("scala-multi-module-cross-version");
10 | }
11 |
12 | @Test
13 | public void checkAndAggregateAll() throws Exception {
14 |
15 | AssertableBuildResult result = run("clean", ScoveragePlugin.getCHECK_NAME(),
16 | ScoveragePlugin.getAGGREGATE_NAME());
17 |
18 | result.assertTaskSkipped(ScoveragePlugin.getREPORT_NAME());
19 | result.assertTaskSucceeded("2_12:" + ScoveragePlugin.getREPORT_NAME());
20 | result.assertTaskSucceeded("2_13:" + ScoveragePlugin.getREPORT_NAME());
21 | result.assertTaskSucceeded(ScoveragePlugin.getCHECK_NAME());
22 | result.assertTaskSucceeded("2_12:" + ScoveragePlugin.getCHECK_NAME());
23 | result.assertTaskSucceeded("2_13:" + ScoveragePlugin.getCHECK_NAME());
24 | result.assertTaskSucceeded(ScoveragePlugin.getAGGREGATE_NAME());
25 |
26 | assertAggregationFilesExist();
27 | assertCoverage(100.0);
28 | }
29 |
30 | private void assertAggregationFilesExist() {
31 |
32 | Assert.assertTrue(resolve(reportDir(), "index.html").exists());
33 | Assert.assertTrue(resolve(reportDir(), "org/hello/World2_12.scala.html").exists());
34 | Assert.assertTrue(resolve(reportDir(), "org/hello/World2_13.scala.html").exists());
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-java-annotation-processor/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.scoverage' apply false
3 | }
4 |
5 | description = 'a multi-module Scala and Java project using a Java annotation processor'
6 |
7 | allprojects {
8 | repositories {
9 | mavenCentral()
10 | }
11 | }
12 |
13 | def lombokVersion = '1.18.20'
14 |
15 | subprojects {
16 | apply plugin: 'java'
17 |
18 | dependencies {
19 | testImplementation group: 'org.junit.platform', name: 'junit-platform-runner', version: junitPlatformVersion
20 |
21 | compileOnly "org.projectlombok:lombok:$lombokVersion"
22 | annotationProcessor "org.projectlombok:lombok:$lombokVersion"
23 |
24 | testCompileOnly "org.projectlombok:lombok:$lombokVersion"
25 | testAnnotationProcessor "org.projectlombok:lombok:$lombokVersion"
26 | }
27 |
28 | test {
29 | useJUnitPlatform()
30 | }
31 | }
32 |
33 | /*
34 | Because the Scala compiler doesn't support annotation processors, Java files using a Java annotation
35 | processor MUST be compiled by the Java compiler. So we can't use the same
36 | configuration as in `scala-java-multi-module` here.
37 |
38 | // A common practice in mixed java/scala modules to make Java code able to import Scala code
39 | ext.configureSources = { set, name ->
40 | set.scala.srcDir("src/$name/java")
41 | set.java.srcDirs = []
42 | }
43 | configureSources(sourceSets.main, 'main')
44 | configureSources(sourceSets.test, 'test')
45 | */
46 |
47 | apply plugin: 'org.scoverage'
48 | scoverage {
49 | minimumRate = 0.5
50 | }
51 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-single-module/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.scoverage'
3 | }
4 |
5 | repositories {
6 | mavenCentral()
7 | }
8 |
9 | description = 'a single-module Scala project that builds successfully with 50% coverage'
10 |
11 | apply plugin: 'java'
12 | apply plugin: 'scala'
13 |
14 | dependencies {
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 | }
26 |
27 | testRuntimeOnly group: 'org.junit.vintage', name: 'junit-vintage-engine', version: junitVersion
28 | testImplementation group: 'org.junit.platform', name: 'junit-platform-runner', version: junitPlatformVersion
29 | }
30 |
31 | test {
32 | useJUnitPlatform()
33 | }
34 |
35 | scoverage {
36 | minimumRate = 0.3
37 | coverageType = org.scoverage.CoverageType.Line
38 | // verify that debug mode works
39 | coverageDebug = true
40 | }
41 |
42 | if (hasProperty("excludedFile")) {
43 | scoverage.excludedFiles = [excludedFile]
44 | }
45 |
--------------------------------------------------------------------------------
/src/functionalTest/java/org/scoverage/MultiModulePluginNotConfiguredForScalaTest.java:
--------------------------------------------------------------------------------
1 | package org.scoverage;
2 |
3 | import org.junit.Assert;
4 | import org.junit.Test;
5 |
6 | public class MultiModulePluginNotConfiguredForScalaTest extends ScoverageFunctionalTest {
7 |
8 | public MultiModulePluginNotConfiguredForScalaTest() {
9 | super("multi-module-plugin-not-configured-for-scala");
10 | }
11 |
12 | @Test
13 | public void checkAndAggregateScoverage() throws Exception {
14 |
15 | AssertableBuildResult result = run("clean", ScoveragePlugin.getCHECK_NAME(),
16 | ScoveragePlugin.getAGGREGATE_NAME());
17 |
18 | result.assertTaskSkipped(ScoveragePlugin.getREPORT_NAME());
19 | result.assertTaskSkipped("scala_only:" + ScoveragePlugin.getREPORT_NAME());
20 | result.assertTaskSkipped("java_only:" + ScoveragePlugin.getREPORT_NAME());
21 | result.assertTaskSkipped(ScoveragePlugin.getCHECK_NAME());
22 | result.assertTaskSkipped("scala_only:" + ScoveragePlugin.getCHECK_NAME());
23 | result.assertTaskSkipped("java_only:" + ScoveragePlugin.getCHECK_NAME());
24 | result.assertTaskSkipped(ScoveragePlugin.getAGGREGATE_NAME());
25 |
26 | assertReportDirsEmpty();
27 |
28 | Assert.assertTrue(result.getResult().getOutput().contains("Scala sub-project 'scala_only' doesn't have Scoverage applied"));
29 | Assert.assertFalse(result.getResult().getOutput().contains("Scala sub-project 'java_only' doesn't have Scoverage applied"));
30 | }
31 |
32 | private void assertReportDirsEmpty() {
33 |
34 | Assert.assertFalse(reportDir().exists());
35 | Assert.assertFalse(reportDir(projectDir().toPath().resolve("scala_only").toFile()).exists());
36 | Assert.assertFalse(reportDir(projectDir().toPath().resolve("java_only").toFile()).exists());
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/src/functionalTest/java/org/scoverage/ScalaJavaAnnotationProcessorTest.java:
--------------------------------------------------------------------------------
1 | package org.scoverage;
2 |
3 | import org.gradle.testkit.runner.TaskOutcome;
4 | import org.junit.Assert;
5 | import org.junit.Test;
6 |
7 | import java.io.File;
8 |
9 | public class ScalaJavaAnnotationProcessorTest extends ScoverageFunctionalTest {
10 |
11 | public ScalaJavaAnnotationProcessorTest() {
12 | super("scala-java-annotation-processor");
13 | }
14 |
15 | @Test
16 | public void checkAndAggregateScoverage() throws Exception {
17 |
18 | AssertableBuildResult result = run("clean", ScoveragePlugin.getCHECK_NAME(),
19 | ScoveragePlugin.getAGGREGATE_NAME());
20 |
21 | result.assertTaskSkipped("java_only:" + ScoveragePlugin.getCOMPILE_NAME());
22 |
23 | result.assertTaskSkipped(ScoveragePlugin.getREPORT_NAME());
24 | result.assertTaskSucceeded("mixed_scala_java:" + ScoveragePlugin.getREPORT_NAME());
25 | result.assertTaskSkipped("java_only:" + ScoveragePlugin.getREPORT_NAME());
26 |
27 | result.assertTaskSucceeded(ScoveragePlugin.getCHECK_NAME());
28 | result.assertTaskSucceeded("mixed_scala_java:" + ScoveragePlugin.getCHECK_NAME());
29 | result.assertTaskSkipped("java_only:" + ScoveragePlugin.getCHECK_NAME());
30 |
31 | result.assertTaskSucceeded(ScoveragePlugin.getAGGREGATE_NAME());
32 |
33 | assertAllReportFilesExist();
34 | assertCoverage(100.0);
35 | }
36 |
37 | private void assertAllReportFilesExist() {
38 |
39 | Assert.assertTrue(resolve(reportDir(), "index.html").exists());
40 |
41 | assertMixedScalaJavaReportFilesExist();
42 | assertAggregationFilesExist();
43 | }
44 |
45 | private void assertAggregationFilesExist() {
46 |
47 | Assert.assertTrue(resolve(reportDir(), "org/hello/WorldScala.scala.html").exists());
48 | }
49 |
50 | private void assertMixedScalaJavaReportFilesExist() {
51 |
52 | File reportDir = reportDir(projectDir().toPath().resolve("mixed_scala_java").toFile());
53 | Assert.assertTrue(resolve(reportDir, "index.html").exists());
54 | Assert.assertTrue(resolve(reportDir, "org/hello/WorldScala.scala.html").exists());
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-multi-module-multiple-test-tasks/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.scoverage' apply false
3 | }
4 |
5 | allprojects {
6 | repositories {
7 | mavenCentral()
8 | }
9 | }
10 |
11 | description = 'a multi-module Scala project that builds successfully with 100% coverage'
12 |
13 | allprojects {
14 |
15 | apply plugin: 'java'
16 | apply plugin: 'scala'
17 | apply plugin: 'org.scoverage'
18 |
19 | dependencies {
20 | implementation group: 'org.scala-lang', name: 'scala-library', version: "${scalaVersionMajor}.${scalaVersionMinor}.${scalaVersionBuild}"
21 |
22 | testRuntimeOnly group: 'org.junit.vintage', name: 'junit-vintage-engine', version: junitVersion
23 | testImplementation group: 'org.junit.platform', name: 'junit-platform-runner', version: junitPlatformVersion
24 |
25 | testImplementation group: 'org.scalatest', name: "scalatest_${scalaVersionMajor}.${scalaVersionMinor}", version: scalatestVersion
26 | }
27 |
28 | testing {
29 | suites {
30 | configureEach {
31 | useJUnit()
32 | targets.configureEach {
33 | testTask.configure {
34 | maxParallelForks = 1
35 | }
36 | }
37 | }
38 | intTest(JvmTestSuite) {
39 | testType = TestSuiteType.INTEGRATION_TEST
40 | // dependencies { ... } does not appear to work as advertised?
41 | sources {
42 | scala {
43 | compileClasspath += sourceSets.test.compileClasspath + sourceSets.main.output + sourceSets.test.output
44 | runtimeClasspath += sourceSets.test.runtimeClasspath
45 | }
46 | }
47 | targets.configureEach {
48 | testTask.configure{
49 | outputs.upToDateWhen { false }
50 | mustRunAfter(test)
51 | }
52 | }
53 | }
54 | }
55 | }
56 | check.dependsOn(testing.suites.intTest)
57 |
58 | scoverage {
59 | minimumRate = 0.5
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/src/functionalTest/resources/projects/scala-single-module-multiple-test-tasks/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'io.spring.dependency-management' version "1.1.5"
3 | id 'org.scoverage'
4 | id 'jvm-test-suite'
5 | }
6 |
7 | repositories {
8 | mavenCentral()
9 | }
10 |
11 | description = 'a single-module Scala project with dependency manager that builds successfully with 100% coverage'
12 |
13 | apply plugin: 'scala'
14 |
15 |
16 | dependencyManagement {
17 | dependencies {
18 | dependency group: 'org.scala-lang', name: 'scala-library', version: "${scalaVersionMajor}.${scalaVersionMinor}.${scalaVersionBuild}"
19 | }
20 | }
21 |
22 | dependencies {
23 | implementation group: 'org.scala-lang', name: 'scala-library'
24 |
25 | testRuntimeOnly group: 'org.junit.vintage', name: 'junit-vintage-engine', version: junitVersion
26 | testImplementation group: 'org.junit.platform', name: 'junit-platform-runner', version: junitPlatformVersion
27 |
28 | testImplementation group: 'org.scalatest', name: "scalatest_${scalaVersionMajor}.${scalaVersionMinor}", version: scalatestVersion
29 | }
30 |
31 | testing {
32 | suites {
33 | configureEach {
34 | useJUnit()
35 | targets.configureEach {
36 | testTask.configure {
37 | maxParallelForks = 1
38 | }
39 | }
40 | }
41 | intTest(JvmTestSuite) {
42 | testType = TestSuiteType.INTEGRATION_TEST
43 | // dependencies { ... } does not appear to work as advertised?
44 | sources {
45 | scala {
46 | compileClasspath += sourceSets.test.compileClasspath + sourceSets.main.output + sourceSets.test.output
47 | runtimeClasspath += sourceSets.test.runtimeClasspath
48 | }
49 | }
50 | targets.configureEach {
51 | testTask.configure{
52 | outputs.upToDateWhen { false }
53 | mustRunAfter(test)
54 | }
55 | }
56 | }
57 | }
58 | }
59 | check.dependsOn(testing.suites.intTest)
60 |
61 | scoverage {
62 | minimumRate = 0.6
63 | }
64 |
65 | if (hasProperty("excludedFile")) {
66 | scoverage.excludedFiles = [excludedFile]
67 | }
68 |
--------------------------------------------------------------------------------
/src/main/groovy/org/scoverage/ScoverageReport.groovy:
--------------------------------------------------------------------------------
1 | package org.scoverage
2 |
3 | import org.gradle.api.DefaultTask
4 | import org.gradle.api.file.FileCollection
5 | import org.gradle.api.provider.Property
6 | import org.gradle.api.tasks.CacheableTask
7 | import org.gradle.api.tasks.Input
8 | import org.gradle.api.tasks.InputDirectory
9 | import org.gradle.api.tasks.InputFiles
10 | import org.gradle.api.tasks.Nested
11 | import org.gradle.api.tasks.OutputDirectory
12 | import org.gradle.api.tasks.PathSensitive
13 | import org.gradle.api.tasks.TaskAction
14 | import scoverage.reporter.CoverageAggregator
15 |
16 | import static org.gradle.api.tasks.PathSensitivity.RELATIVE
17 |
18 | @CacheableTask
19 | class ScoverageReport extends DefaultTask {
20 |
21 | @Nested
22 | ScoverageRunner runner
23 |
24 | @InputDirectory
25 | @PathSensitive(RELATIVE)
26 | final Property dataDir = project.objects.property(File)
27 |
28 | @InputFiles
29 | @PathSensitive(RELATIVE)
30 | final Property sources = project.objects.property(FileCollection)
31 |
32 | @OutputDirectory
33 | final Property reportDir = project.objects.property(File)
34 |
35 | @Input
36 | final Property sourceEncoding = project.objects.property(String)
37 |
38 | @Input
39 | final Property coverageOutputCobertura = project.objects.property(Boolean)
40 | @Input
41 | final Property coverageOutputXML = project.objects.property(Boolean)
42 | @Input
43 | final Property coverageOutputHTML = project.objects.property(Boolean)
44 | @Input
45 | final Property coverageDebug = project.objects.property(Boolean)
46 |
47 | @TaskAction
48 | def report() {
49 | runner.run {
50 | reportDir.get().delete()
51 | reportDir.get().mkdirs()
52 |
53 | def sourceRoot = getProject().getRootDir()
54 | def coverage = CoverageAggregator.aggregate([dataDir.get()] as File[], sourceRoot)
55 |
56 | if (coverage.isEmpty()) {
57 | project.logger.info("[scoverage] Could not find coverage file, skipping...")
58 | } else {
59 | new ScoverageWriter(project.logger).write(
60 | sources.get().getFiles(),
61 | reportDir.get(),
62 | coverage.get(),
63 | sourceEncoding.get(),
64 | coverageOutputCobertura.get(),
65 | coverageOutputXML.get(),
66 | coverageOutputHTML.get(),
67 | coverageDebug.get())
68 | }
69 | }
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/src/functionalTest/java/org/scoverage/ScalaSingleModuleTestScala3.java:
--------------------------------------------------------------------------------
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 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 | }
58 |
--------------------------------------------------------------------------------
/src/functionalTest/java/org/scoverage/ScalaJavaMultiModuleTest.java:
--------------------------------------------------------------------------------
1 | package org.scoverage;
2 |
3 | import org.junit.Assert;
4 | import org.junit.Test;
5 |
6 | import java.io.File;
7 |
8 | public class ScalaJavaMultiModuleTest extends ScoverageFunctionalTest {
9 |
10 | public ScalaJavaMultiModuleTest() {
11 | super("scala-java-multi-module");
12 | }
13 |
14 | @Test
15 | public void checkAndAggregateScoverage() throws Exception {
16 |
17 | AssertableBuildResult result = run("clean", ScoveragePlugin.getCHECK_NAME(),
18 | ScoveragePlugin.getAGGREGATE_NAME());
19 |
20 | result.assertTaskSkipped("java_only:" + ScoveragePlugin.getCOMPILE_NAME());
21 |
22 | result.assertTaskSkipped(ScoveragePlugin.getREPORT_NAME());
23 | result.assertTaskSucceeded("scala_only:" + ScoveragePlugin.getREPORT_NAME());
24 | result.assertTaskSucceeded("mixed_scala_java:" + ScoveragePlugin.getREPORT_NAME());
25 | result.assertTaskSkipped("java_only:" + ScoveragePlugin.getREPORT_NAME());
26 |
27 | result.assertTaskSucceeded(ScoveragePlugin.getCHECK_NAME());
28 | result.assertTaskSucceeded("scala_only:" + ScoveragePlugin.getCHECK_NAME());
29 | result.assertTaskSucceeded("mixed_scala_java:" + ScoveragePlugin.getCHECK_NAME());
30 | result.assertTaskSkipped("java_only:" + ScoveragePlugin.getCHECK_NAME());
31 |
32 | result.assertTaskSucceeded(ScoveragePlugin.getAGGREGATE_NAME());
33 |
34 | assertAllReportFilesExist();
35 | assertCoverage(100.0);
36 | }
37 |
38 | private void assertAllReportFilesExist() {
39 |
40 | Assert.assertTrue(resolve(reportDir(), "index.html").exists());
41 |
42 | assertScalaOnlyReportFilesExist();
43 | assertMixedScalaJavaReportFilesExist();
44 | assertAggregationFilesExist();
45 | }
46 |
47 | private void assertAggregationFilesExist() {
48 |
49 | Assert.assertTrue(resolve(reportDir(), "org/hello/WorldScalaOnly.scala.html").exists());
50 | Assert.assertTrue(resolve(reportDir(), "org/hello/WorldScala.scala.html").exists());
51 | }
52 |
53 | private void assertScalaOnlyReportFilesExist() {
54 |
55 | File reportDir = reportDir(projectDir().toPath().resolve("scala_only").toFile());
56 | Assert.assertTrue(resolve(reportDir, "index.html").exists());
57 | Assert.assertTrue(resolve(reportDir, "org/hello/WorldScalaOnly.scala.html").exists());
58 | }
59 |
60 | private void assertMixedScalaJavaReportFilesExist() {
61 |
62 | File reportDir = reportDir(projectDir().toPath().resolve("mixed_scala_java").toFile());
63 | Assert.assertTrue(resolve(reportDir, "index.html").exists());
64 | Assert.assertTrue(resolve(reportDir, "org/hello/WorldScala.scala.html").exists());
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/src/main/groovy/org/scoverage/ScoverageAggregate.groovy:
--------------------------------------------------------------------------------
1 | package org.scoverage
2 |
3 | import org.gradle.api.DefaultTask
4 | import org.gradle.api.file.FileCollection
5 | import org.gradle.api.provider.ListProperty
6 | import org.gradle.api.provider.Property
7 | import org.gradle.api.tasks.Input
8 | import org.gradle.api.tasks.InputFiles
9 | import org.gradle.api.tasks.Nested
10 | import org.gradle.api.tasks.OutputDirectory
11 | import org.gradle.api.tasks.PathSensitive
12 | import org.gradle.api.tasks.TaskAction
13 | import scoverage.reporter.CoverageAggregator
14 |
15 | import static org.gradle.api.tasks.PathSensitivity.RELATIVE
16 |
17 | class ScoverageAggregate extends DefaultTask {
18 |
19 | @Nested
20 | ScoverageRunner runner
21 |
22 | @InputFiles
23 | @PathSensitive(RELATIVE)
24 | final Property sources = project.objects.property(FileCollection)
25 |
26 | @OutputDirectory
27 | final Property reportDir = project.objects.property(File)
28 |
29 | @Input
30 | final ListProperty dirsToAggregateFrom = project.objects.listProperty(File)
31 |
32 | @Input
33 | final Property deleteReportsOnAggregation = project.objects.property(Boolean)
34 |
35 | @Input
36 | final Property sourceEncoding = project.objects.property(String)
37 |
38 | // TODO - consider separate options for `report` and `aggregate` tasks
39 | @Input
40 | final Property coverageOutputCobertura = project.objects.property(Boolean)
41 | @Input
42 | final Property coverageOutputXML = project.objects.property(Boolean)
43 | @Input
44 | final Property coverageOutputHTML = project.objects.property(Boolean)
45 | @Input
46 | final Property coverageDebug = project.objects.property(Boolean)
47 |
48 | ScoverageAggregate() {
49 | dirsToAggregateFrom.set([project.extensions.scoverage.dataDir.get()])
50 | }
51 |
52 | @TaskAction
53 | def aggregate() {
54 | runner.run {
55 | reportDir.get().deleteDir()
56 | reportDir.get().mkdirs()
57 |
58 | def dirs = []
59 | dirs.addAll(dirsToAggregateFrom.get())
60 | def sourceRoot = getProject().getRootDir()
61 | def coverage = CoverageAggregator.aggregate(dirs.unique() as File[], sourceRoot)
62 |
63 | if (coverage.nonEmpty()) {
64 | new ScoverageWriter(project.logger).write(
65 | sources.get().getFiles(),
66 | reportDir.get(),
67 | coverage.get(),
68 | sourceEncoding.get(),
69 | coverageOutputCobertura.get(),
70 | coverageOutputXML.get(),
71 | coverageOutputHTML.get(),
72 | coverageDebug.get()
73 | )
74 | }
75 | }
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/src/functionalTest/java/org/scoverage/DetectScalaLibraryTest.java:
--------------------------------------------------------------------------------
1 | package org.scoverage;
2 |
3 | import org.junit.Test;
4 | import org.junit.runner.RunWith;
5 | import org.junit.runners.Parameterized;
6 |
7 | import java.util.Arrays;
8 | import java.util.Collection;
9 | import java.util.stream.Stream;
10 |
11 | import static org.hamcrest.MatcherAssert.assertThat;
12 | import static org.hamcrest.Matchers.containsString;
13 | import static org.hamcrest.Matchers.stringContainsInOrder;
14 |
15 | @RunWith(Parameterized.class)
16 | public class DetectScalaLibraryTest extends ScoverageFunctionalTest {
17 |
18 | private static final String SCALA_VERSION = "2.13";
19 | private static final String SCALA_LIBRARY_PARAMETER = "-PdetectedScalaLibraryVersion=";
20 |
21 | @Parameterized.Parameter(0)
22 | public String projectDir;
23 |
24 | @Parameterized.Parameter(1)
25 | public String[] subVersions;
26 |
27 | @Parameterized.Parameter(2)
28 | public boolean detect;
29 |
30 | @Parameterized.Parameter(3)
31 | public String[] additionalParameters;
32 |
33 | @Parameterized.Parameters(name = "{index}: Project {0} ")
34 | public static Collection