diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 294414cb..ed16eedd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,10 +11,11 @@ on: jobs: test: - runs-on: ubuntu-latest + runs-on: ${{ matrix.os }} strategy: matrix: java: [ '8', '17' ] + os: [ 'ubuntu-latest' ] steps: - name: checkout the repo diff --git a/src/main/scala/scoverage/ScoverageSbtPlugin.scala b/src/main/scala/scoverage/ScoverageSbtPlugin.scala index 57ca108c..d59dbf91 100644 --- a/src/main/scala/scoverage/ScoverageSbtPlugin.scala +++ b/src/main/scala/scoverage/ScoverageSbtPlugin.scala @@ -2,6 +2,7 @@ package scoverage import sbt.Keys._ import sbt._ +import sbt.internal.util.Util.isWindows import sbt.plugins.JvmPlugin import scoverage.reporter.CoberturaXmlWriter import scoverage.domain.Constants @@ -147,7 +148,7 @@ object ScoverageSbtPlugin extends AutoPlugin { Seq( Some( - s"-Xplugin:${pluginPaths.mkString(":")}" + s"-Xplugin:${pluginPaths.mkString(java.io.File.pathSeparator)}" ), Some( s"-P:scoverage:dataDir:${coverageDataDir.value.getAbsolutePath}/scoverage-data" @@ -160,6 +161,13 @@ object ScoverageSbtPlugin extends AutoPlugin { .map(v => s"-P:scoverage:excludedPackages:$v"), Option(coverageExcludedFiles.value.trim) .filter(_.nonEmpty) + .map(v => + // On windows, replace unix file separators with windows file + // separators. Note that we need to replace / with \\ because + // the plugin treats this string as a regular expression and + // backslashes must be escaped in regular expressions. + if (isWindows) v.replace("/", """\\""") else v + ) .map(v => s"-P:scoverage:excludedFiles:$v"), Some("-P:scoverage:reportTestName"), // rangepos is broken in some releases of scala so option to turn it off diff --git a/src/sbt-test/scoverage/coverage-excluded-files/build.sbt b/src/sbt-test/scoverage/coverage-excluded-files/build.sbt index 22856a91..4fcc343e 100644 --- a/src/sbt-test/scoverage/coverage-excluded-files/build.sbt +++ b/src/sbt-test/scoverage/coverage-excluded-files/build.sbt @@ -4,7 +4,7 @@ scalaVersion := "2.13.6" libraryDependencies += "org.scalameta" %% "munit" % "0.7.29" % Test -coverageExcludedFiles := ".*\\/two\\/GoodCoverage" +coverageExcludedFiles := ".*/two/GoodCoverage" resolvers ++= { if (sys.props.get("plugin.version").exists(_.endsWith("-SNAPSHOT"))) diff --git a/src/sbt-test/scoverage/scala3-coverage-excluded-files/build.sbt b/src/sbt-test/scoverage/scala3-coverage-excluded-files/build.sbt index b6fed517..939f7489 100644 --- a/src/sbt-test/scoverage/scala3-coverage-excluded-files/build.sbt +++ b/src/sbt-test/scoverage/scala3-coverage-excluded-files/build.sbt @@ -4,7 +4,7 @@ scalaVersion := "3.2.0-RC1" libraryDependencies += "org.scalameta" %% "munit" % "0.7.29" % Test -coverageExcludedFiles := ".*\\/two\\/GoodCoverage" +coverageExcludedFiles := ".*/two/GoodCoverage" resolvers ++= { if (sys.props.get("plugin.version").exists(_.endsWith("-SNAPSHOT")))