From 7ae649bca489d70da34491409a88e03b665a9388 Mon Sep 17 00:00:00 2001 From: Grzegorz Slowikowski Date: Sun, 28 Apr 2019 23:09:44 +0200 Subject: [PATCH 1/2] Add Scala 2.13.0-RC1 support - upgrade Scala version from 2.13.0-M5 to 2.13.0-RC1 in `build.sbt` and `.travis.yml` - upgrade scalatest version from 3.0.6-SNAP4 to 3.0.8-RC2 - upgrade stala-xml version from 1.1.1 to 1.2.0 Some fixes in tests were required: - 's' and 'raw' string interpolators are now implemented as macros and macros are not instrumented; 's"Hello, $name"' expression was changed to explicit strings concatenation '"Hello, " + name' so the number of instrumented statements is the same in all Scala versions see: https://github.com/scala/scala/pull/7779/commits/0cebcdf39173dac28be627260b48c41f16f7fa0f#diff-648e8f7f409d844c3c99b2d5a0d0dfe5R94 https://github.com/scala/scala/pull/7779 - special symbol for all compilation phases was changed from "all" to "_" see: https://github.com/scala/scala/pull/7908/commits/4d29431462cc0d03514d415092b2b5cfdeb05e35#diff-d686e8e67add4d42682f22193d20494bR1246 https://github.com/scala/scala/pull/7908 --- .travis.yml | 2 +- build.sbt | 11 ++++++++--- .../src/test/scala/scoverage/PluginCoverageTest.scala | 2 +- .../src/test/scala/scoverage/ScoverageCompiler.scala | 2 +- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 0b4deb99..96fedddf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,7 +10,7 @@ scala: - 2.10.7 - 2.11.12 - 2.12.8 - - 2.13.0-M5 + - 2.13.0-RC1 before_cache: - find "$HOME/.sbt/" -name '*.lock' -print0 | xargs -0 rm diff --git a/build.sbt b/build.sbt index a6597c61..85dc261b 100644 --- a/build.sbt +++ b/build.sbt @@ -6,12 +6,12 @@ import sbtcrossproject.CrossProject import sbtcrossproject.CrossType val Org = "org.scoverage" -val ScalatestVersion = "3.0.6-SNAP4" +val ScalatestVersion = "3.0.8-RC2" val appSettings = Seq( organization := Org, scalaVersion := "2.12.8", - crossScalaVersions := Seq("2.10.7", "2.11.12", "2.12.8", "2.13.0-M5"), + crossScalaVersions := Seq("2.10.7", "2.11.12", "2.12.8", "2.13.0-RC1"), fork in Test := false, publishMavenStyle := true, publishArtifact in Test := false, @@ -43,6 +43,11 @@ val appSettings = Seq( Stephen Samuel http://github.com/sksamuel + + gslowikowski + Grzegorz Slowikowski + http://github.com/gslowikowski + }, pomIncludeRepository := { @@ -97,7 +102,7 @@ lazy val plugin = Project("scalac-scoverage-plugin", file("scalac-scoverage-plug libraryDependencies ++= { CrossVersion.partialVersion(scalaVersion.value) match { case Some((2, scalaMajor)) if scalaMajor > 10 => - Seq("org.scala-lang.modules" %% "scala-xml" % "1.1.1") + Seq("org.scala-lang.modules" %% "scala-xml" % "1.2.0") case _ => Seq() } diff --git a/scalac-scoverage-plugin/src/test/scala/scoverage/PluginCoverageTest.scala b/scalac-scoverage-plugin/src/test/scala/scoverage/PluginCoverageTest.scala index 3682b14f..6426a6d3 100644 --- a/scalac-scoverage-plugin/src/test/scala/scoverage/PluginCoverageTest.scala +++ b/scalac-scoverage-plugin/src/test/scala/scoverage/PluginCoverageTest.scala @@ -14,7 +14,7 @@ class PluginCoverageTest compiler.compileCodeSnippet( """ object DefaultArgumentsObject { | val defaultName = "world" | def makeGreeting(name: String = defaultName): String = { - | s"Hello, $name" + | "Hello, " + name | } |} """.stripMargin) assert(!compiler.reporter.hasErrors) diff --git a/scalac-scoverage-plugin/src/test/scala/scoverage/ScoverageCompiler.scala b/scalac-scoverage-plugin/src/test/scala/scoverage/ScoverageCompiler.scala index 62349c20..aa282de7 100644 --- a/scalac-scoverage-plugin/src/test/scala/scoverage/ScoverageCompiler.scala +++ b/scalac-scoverage-plugin/src/test/scala/scoverage/ScoverageCompiler.scala @@ -21,7 +21,7 @@ object ScoverageCompiler { def settings: Settings = { val s = new scala.tools.nsc.Settings - s.Xprint.value = List("all") + s.Xprint.value = List("all", "_") s.deprecation.value = true s.Yrangepos.value = true s.Yposdebug.value = true From f1e50bdf223fa0a6d4503be69008b6b0ce74ebd5 Mon Sep 17 00:00:00 2001 From: Grzegorz Slowikowski Date: Sun, 28 Apr 2019 23:12:20 +0200 Subject: [PATCH 2/2] Fix new warnings reported by Scala 2.13.0-RC1 There are two kinds of warnings: 1. [warn] .../scalac-scoverage-plugin/src/test/scala/scoverage/ScoverageCompiler.scala:102:26: method assert in class SymbolTable is deprecated (since 2.12.5): consider supplying an explanatory message [warn] def assertNoErrors() = assert(!reporter.hasErrors) [warn] ^ 2. code_snippet3799296259402470632.scala:2: warning: symbol literal is deprecated; use Symbol("boo") instead object Bammy { def foo = 'boo } ^ --- .../src/test/scala/scoverage/LocationTest.scala | 14 +++++++------- .../test/scala/scoverage/ScoverageCompiler.scala | 5 +++-- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/scalac-scoverage-plugin/src/test/scala/scoverage/LocationTest.scala b/scalac-scoverage-plugin/src/test/scala/scoverage/LocationTest.scala index 64b37a0d..dcdda4c3 100644 --- a/scalac-scoverage-plugin/src/test/scala/scoverage/LocationTest.scala +++ b/scalac-scoverage-plugin/src/test/scala/scoverage/LocationTest.scala @@ -19,7 +19,7 @@ class LocationTest extends FreeSpec with Matchers { } "for objects" in { val compiler = ScoverageCompiler.locationCompiler - compiler.compile("package com.test\nobject Bammy { def foo = 'boo } ") + compiler.compile("package com.test\nobject Bammy { def foo = Symbol(\"boo\") } ") val loc = compiler.locations.result().find(_._1 == "Template").get._2 loc.packageName shouldBe "com.test" loc.className shouldBe "Bammy" @@ -30,7 +30,7 @@ class LocationTest extends FreeSpec with Matchers { } "for traits" in { val compiler = ScoverageCompiler.locationCompiler - compiler.compile("package com.test\ntrait Gammy { def goo = 'hoo } ") + compiler.compile("package com.test\ntrait Gammy { def goo = Symbol(\"hoo\") } ") val loc = compiler.locations.result().find(_._1 == "Template").get._2 loc.packageName shouldBe "com.test" loc.className shouldBe "Gammy" @@ -42,7 +42,7 @@ class LocationTest extends FreeSpec with Matchers { } "should correctly process methods" in { val compiler = ScoverageCompiler.locationCompiler - compiler.compile("package com.methodtest \n class Hammy { def foo = 'boo } ") + compiler.compile("package com.methodtest \n class Hammy { def foo = Symbol(\"boo\") } ") val loc = compiler.locations.result().find(_._2.method == "foo").get._2 loc.packageName shouldBe "com.methodtest" loc.className shouldBe "Hammy" @@ -150,7 +150,7 @@ class LocationTest extends FreeSpec with Matchers { "should use method name" - { "for class constructor body" in { val compiler = ScoverageCompiler.locationCompiler - compiler.compile("package com.b \n class Tammy { val name = 'sam } ") + compiler.compile("package com.b \n class Tammy { val name = Symbol(\"sam\") } ") val loc = compiler.locations.result().find(_._1 == "ValDef").get._2 loc.packageName shouldBe "com.b" loc.className shouldBe "Tammy" @@ -161,7 +161,7 @@ class LocationTest extends FreeSpec with Matchers { } "for object constructor body" in { val compiler = ScoverageCompiler.locationCompiler - compiler.compile("package com.b \n object Yammy { val name = 'sam } ") + compiler.compile("package com.b \n object Yammy { val name = Symbol(\"sam\") } ") val loc = compiler.locations.result().find(_._1 == "ValDef").get._2 loc.packageName shouldBe "com.b" loc.className shouldBe "Yammy" @@ -172,7 +172,7 @@ class LocationTest extends FreeSpec with Matchers { } "for trait constructor body" in { val compiler = ScoverageCompiler.locationCompiler - compiler.compile("package com.b \n trait Wammy { val name = 'sam } ") + compiler.compile("package com.b \n trait Wammy { val name = Symbol(\"sam\") } ") val loc = compiler.locations.result().find(_._1 == "ValDef").get._2 loc.packageName shouldBe "com.b" loc.className shouldBe "Wammy" @@ -209,7 +209,7 @@ class LocationTest extends FreeSpec with Matchers { } "doubly nested classes should report correct fullClassName" in { val compiler = ScoverageCompiler.locationCompiler - compiler.compile("package com.a \n object Foo { object Boo { object Moo { val name = 'sam } } }") + compiler.compile("package com.a \n object Foo { object Boo { object Moo { val name = Symbol(\"sam\") } } }") val loc = compiler.locations.result().find(_._1 == "ValDef").get._2 loc.packageName shouldBe "com.a" loc.className shouldBe "Moo" diff --git a/scalac-scoverage-plugin/src/test/scala/scoverage/ScoverageCompiler.scala b/scalac-scoverage-plugin/src/test/scala/scoverage/ScoverageCompiler.scala index aa282de7..7a8e403b 100644 --- a/scalac-scoverage-plugin/src/test/scala/scoverage/ScoverageCompiler.scala +++ b/scalac-scoverage-plugin/src/test/scala/scoverage/ScoverageCompiler.scala @@ -99,9 +99,10 @@ class ScoverageCompiler(settings: scala.tools.nsc.Settings, reporter: scala.tool compileSourceFiles(urls.map(_.getFile).map(new File(_)): _*) } - def assertNoErrors() = assert(!reporter.hasErrors) + def assertNoErrors() = assert(!reporter.hasErrors, "There are compilation errors") - def assertNoCoverage() = assert(!testStore.sources.mkString(" ").contains(s"scoverage.Invoker.invoked")) + def assertNoCoverage() = assert(!testStore.sources.mkString(" ").contains(s"scoverage.Invoker.invoked"), + "There are scoverage.Invoker.invoked instructions added to the code") def assertNMeasuredStatements(n: Int): Unit = { for (k <- 1 to n) {