From 2e7fb81a739e52ec26ba6ea712172888425b8921 Mon Sep 17 00:00:00 2001 From: Tomasz Godzik Date: Tue, 21 Oct 2025 12:03:46 +0200 Subject: [PATCH] improvement: Add fallback to 2.3.0 for older Scala versions --- .../scala/scoverage/ScoverageSbtPlugin.scala | 13 ++++++++++++- .../scoverage/good-coverage-older/build.sbt | 17 +++++++++++++++++ .../good-coverage-older/project/plugins.sbt | 9 +++++++++ .../src/main/scala/GoodCoverage.scala | 7 +++++++ .../src/main/scala/two/GoodCoverage.scala | 9 +++++++++ .../src/test/scala/GoodCoverageSpec.scala | 19 +++++++++++++++++++ .../scoverage/good-coverage-older/test | 5 +++++ 7 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 src/sbt-test/scoverage/good-coverage-older/build.sbt create mode 100644 src/sbt-test/scoverage/good-coverage-older/project/plugins.sbt create mode 100644 src/sbt-test/scoverage/good-coverage-older/src/main/scala/GoodCoverage.scala create mode 100644 src/sbt-test/scoverage/good-coverage-older/src/main/scala/two/GoodCoverage.scala create mode 100644 src/sbt-test/scoverage/good-coverage-older/src/test/scala/GoodCoverageSpec.scala create mode 100644 src/sbt-test/scoverage/good-coverage-older/test diff --git a/src/main/scala/scoverage/ScoverageSbtPlugin.scala b/src/main/scala/scoverage/ScoverageSbtPlugin.scala index c376fcae..76a9cdf3 100644 --- a/src/main/scala/scoverage/ScoverageSbtPlugin.scala +++ b/src/main/scala/scoverage/ScoverageSbtPlugin.scala @@ -70,7 +70,18 @@ object ScoverageSbtPlugin extends AutoPlugin { coverageReport := coverageReport0.value, coverageAggregate := coverageAggregate0.value, coverageAggregate / aggregate := false, - coverageDataDir := crossTarget.value + coverageDataDir := crossTarget.value, + coverageScalacPluginVersion := { + scalaVersion.value match { + case "2.13.11" => "2.3.0" + case "2.13.12" => "2.3.0" + case "2.13.13" => "2.3.0" + case "2.13.14" => "2.3.0" + case "2.13.15" => "2.3.0" + case "2.12.16" => "2.3.0" + case _ => defaultScoverageVersion + } + } ) ++ coverageSettings ++ scalacSettings private def isScala2(scalaVersion: String) = diff --git a/src/sbt-test/scoverage/good-coverage-older/build.sbt b/src/sbt-test/scoverage/good-coverage-older/build.sbt new file mode 100644 index 00000000..aa52d462 --- /dev/null +++ b/src/sbt-test/scoverage/good-coverage-older/build.sbt @@ -0,0 +1,17 @@ +version := "0.1" + +// Set older version to make sure fallbacks work correctly +scalaVersion := "2.13.11" + +libraryDependencies += "org.scalameta" %% "munit" % "1.0.0-M10" % Test + +coverageMinimumStmtTotal := 100 +coverageMinimumBranchTotal := 100 +coverageMinimumStmtPerPackage := 100 +coverageMinimumBranchPerPackage := 100 +coverageMinimumStmtPerFile := 100 +coverageMinimumBranchPerFile := 100 + +coverageFailOnMinimum := true + +allowUnsafeScalaLibUpgrade := true \ No newline at end of file diff --git a/src/sbt-test/scoverage/good-coverage-older/project/plugins.sbt b/src/sbt-test/scoverage/good-coverage-older/project/plugins.sbt new file mode 100644 index 00000000..4361ea41 --- /dev/null +++ b/src/sbt-test/scoverage/good-coverage-older/project/plugins.sbt @@ -0,0 +1,9 @@ +val pluginVersion = sys.props.getOrElse( + "plugin.version", + throw new RuntimeException( + """|The system property 'plugin.version' is not defined. + |Specify this property using the scriptedLaunchOpts -D.""".stripMargin + ) +) + +addSbtPlugin("org.scoverage" % "sbt-scoverage" % pluginVersion) diff --git a/src/sbt-test/scoverage/good-coverage-older/src/main/scala/GoodCoverage.scala b/src/sbt-test/scoverage/good-coverage-older/src/main/scala/GoodCoverage.scala new file mode 100644 index 00000000..ac6582bb --- /dev/null +++ b/src/sbt-test/scoverage/good-coverage-older/src/main/scala/GoodCoverage.scala @@ -0,0 +1,7 @@ +object GoodCoverage { + + def sum(num1: Int, num2: Int) = { + if (0 == num1) num2 else if (0 == num2) num1 else num1 + num2 + } + +} diff --git a/src/sbt-test/scoverage/good-coverage-older/src/main/scala/two/GoodCoverage.scala b/src/sbt-test/scoverage/good-coverage-older/src/main/scala/two/GoodCoverage.scala new file mode 100644 index 00000000..587e11e1 --- /dev/null +++ b/src/sbt-test/scoverage/good-coverage-older/src/main/scala/two/GoodCoverage.scala @@ -0,0 +1,9 @@ +package two + +object GoodCoverage { + + def sum(num1: Int, num2: Int) = { + if (0 == num1) num2 else if (0 == num2) num1 else num1 + num2 + } + +} diff --git a/src/sbt-test/scoverage/good-coverage-older/src/test/scala/GoodCoverageSpec.scala b/src/sbt-test/scoverage/good-coverage-older/src/test/scala/GoodCoverageSpec.scala new file mode 100644 index 00000000..44eec1c9 --- /dev/null +++ b/src/sbt-test/scoverage/good-coverage-older/src/test/scala/GoodCoverageSpec.scala @@ -0,0 +1,19 @@ +import munit.FunSuite + +/** Created by tbarke001c on 7/8/14. + */ +class GoodCoverageSpec extends FunSuite { + + test("GoodCoverage should sum two numbers") { + assertEquals(GoodCoverage.sum(1, 2), 3) + assertEquals(GoodCoverage.sum(0, 3), 3) + assertEquals(GoodCoverage.sum(3, 0), 3) + } + + test("two.GoodCoverage should sum two numbers") { + assertEquals(two.GoodCoverage.sum(1, 2), 3) + assertEquals(two.GoodCoverage.sum(0, 3), 3) + assertEquals(two.GoodCoverage.sum(3, 0), 3) + } + +} diff --git a/src/sbt-test/scoverage/good-coverage-older/test b/src/sbt-test/scoverage/good-coverage-older/test new file mode 100644 index 00000000..c5b157f6 --- /dev/null +++ b/src/sbt-test/scoverage/good-coverage-older/test @@ -0,0 +1,5 @@ +# run scoverage +> clean +> coverage +> test +> coverageReport