Skip to content

Commit

Permalink
Merge pull request #2081 from tgodzik/bump-versions-scala
Browse files Browse the repository at this point in the history
improvement: Automatically include semanticdbjar for tests
  • Loading branch information
tgodzik committed Jun 22, 2023
2 parents a1c1171 + ccea812 commit 02774ea
Show file tree
Hide file tree
Showing 7 changed files with 44 additions and 23 deletions.
2 changes: 2 additions & 0 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,8 @@ lazy val frontend: Project = project
Dependencies.scalaDebugAdapter,
Dependencies.bloopConfig
),
// needed for tests and to be automatically updated
Test / libraryDependencies += Dependencies.semanticdb intransitive (),
dependencyOverrides += Dependencies.shapeless,
scalafixSettings,
testSettings,
Expand Down
Binary file not shown.
11 changes: 6 additions & 5 deletions frontend/src/test/scala/bloop/BuildLoaderSpec.scala
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,11 @@ import bloop.task.Task
import bloop.testing.BaseSuite
import bloop.tracing.TraceProperties
import bloop.util.TestUtil
import bloop.internal.build.BuildTestInfo

object BuildLoaderSpec extends BaseSuite {
val semanticdbVersion = "4.6.0"
val semanticdbVersion2 = "4.5.13"
val semanticdbVersion = BuildTestInfo.semanticdbVersion
val oldSemanticdbVersion = "4.5.13"

testLoad("don't reload if nothing changes") { (testBuild, logger) =>
testBuild.state.build.checkForChange(None, logger).map {
Expand Down Expand Up @@ -64,7 +65,7 @@ object BuildLoaderSpec extends BaseSuite {
val newSettings =
WorkspaceSettings.fromSemanticdbSettings(
"0.2.0",
semanticdbVersion2,
oldSemanticdbVersion,
List(BuildInfo.scalaVersion)
)
testBuild.state.build.checkForChange(Some(newSettings), logger).map {
Expand All @@ -82,7 +83,7 @@ object BuildLoaderSpec extends BaseSuite {
val newSettings =
WorkspaceSettings.fromSemanticdbSettings(
"0.1.0",
semanticdbVersion2,
oldSemanticdbVersion,
List(BuildInfo.scalaVersion)
)
testBuild.state.build.checkForChange(Some(newSettings), logger).map {
Expand Down Expand Up @@ -141,7 +142,7 @@ object BuildLoaderSpec extends BaseSuite {
val newSettings =
WorkspaceSettings.fromSemanticdbSettings(
"0.2.0",
semanticdbVersion2,
oldSemanticdbVersion,
List(BuildInfo.scalaVersion)
)
testBuild.state.build.checkForChange(Some(newSettings), logger).map {
Expand Down
31 changes: 24 additions & 7 deletions frontend/src/test/scala/bloop/bsp/BspCompileSpec.scala
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,13 @@ import java.nio.file.attribute.FileTime
import java.time.Instant
import java.util.concurrent.TimeUnit

import scala.collection.JavaConverters._
import scala.concurrent.duration.FiniteDuration

import bloop.cli.BspProtocol
import bloop.cli.ExitStatus
import bloop.internal.build.BuildInfo
import bloop.internal.build.BuildTestInfo
import bloop.io.AbsolutePath
import bloop.io.Environment.lineSeparator
import bloop.io.{Paths => BloopPaths}
Expand All @@ -18,6 +20,8 @@ import bloop.task.Task
import bloop.util.TestProject
import bloop.util.TestUtil

import coursierapi.Fetch

object TcpBspCompileSpec extends BspCompileSpec(BspProtocol.Tcp)
object LocalBspCompileSpec extends BspCompileSpec(BspProtocol.Local)

Expand Down Expand Up @@ -368,15 +372,28 @@ class BspCompileSpec(
|abject A""".stripMargin
}

// Change the semanticdb jar every time we upgrade Scala version
require(
BuildInfo.scalaVersion == "2.12.17",
"Bumping scala version requires new semanticdb-scalac"
)
val sourceDir = workspace.resolve("a").resolve("src")
val semanticdbJar = unsafeGetResource("semanticdb-scalac_2.12.17-4.6.0.jar")
import coursierapi._

val semanticdbJar = Fetch
.create()
.addDependencies(
Dependency.of(
"org.scalameta",
s"semanticdb-scalac_${BuildInfo.scalaVersion}",
BuildTestInfo.semanticdbVersion
)
)
.fetch()
.asScala
.collectFirst({
case file if file.getName().toString().contains("semanticdb-scalac") => file.toString()
})

assert(semanticdbJar.isDefined)

val semanticdbOpts = List(
s"-Xplugin:$semanticdbJar",
s"-Xplugin:${semanticdbJar.get}",
"-Yrangepos",
s"-P:semanticdb:sourceroot:${sourceDir}"
)
Expand Down
14 changes: 6 additions & 8 deletions frontend/src/test/scala/bloop/bsp/BspMetalsClientSpec.scala
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import bloop.logging.RecordingLogger
import bloop.task.Task
import bloop.util.TestProject
import bloop.util.TestUtil
import bloop.internal.build.BuildTestInfo

object LocalBspMetalsClientSpec extends BspMetalsClientSpec(BspProtocol.Local)
object TcpBspMetalsClientSpec extends BspMetalsClientSpec(BspProtocol.Tcp)
Expand All @@ -29,13 +30,10 @@ class BspMetalsClientSpec(
override val protocol: BspProtocol
) extends BspBaseSuite {
private val testedScalaVersion = BuildInfo.scalaVersion
require(
testedScalaVersion == "2.12.17",
"Updating scala version requires updating semanticDB plugin"
)
private val semanticdbVersion = "4.6.0"
private val semanticdbVersion = BuildTestInfo.semanticdbVersion
private val javaSemanticdbVersion = "0.5.7"
private val semanticdbJar = "semanticdb-scalac_2.12.17-4.6.0.jar"

private val semanticdbJar = s"semanticdb-scalac_$testedScalaVersion-$semanticdbVersion.jar"

private val expectedConfig =
s"""|{
Expand Down Expand Up @@ -117,7 +115,7 @@ class BspMetalsClientSpec(

test("initialize metals client in workspace with already enabled semanticdb") {
TestUtil.withinWorkspace { workspace =>
val pluginPath = s"-Xplugin:path-to-plugin/semanticdb-scalac_2.12.17-4.6.0.jar"
val pluginPath = s"-Xplugin:path-to-plugin/$semanticdbJar"
val defaultScalacOptions = List(
"-P:semanticdb:failures:warning",
s"-P:semanticdb:sourceroot:$workspace",
Expand Down Expand Up @@ -167,7 +165,7 @@ class BspMetalsClientSpec(
"-P:semanticdb:failures:warning",
"-P:semanticdb:synthetics:on",
"-Xplugin-require:semanticdb",
s"-Xplugin:path-to-plugin/semanticdb-scalac_2.12.17-4.6.0.jar",
s"-Xplugin:path-to-plugin/$semanticdbJar",
"-Yrangepos"
)
val `A` = TestProject(
Expand Down
1 change: 1 addition & 0 deletions project/BuildPlugin.scala
Original file line number Diff line number Diff line change
Expand Up @@ -360,6 +360,7 @@ object BuildImplementation {

List(
"sampleSourceGenerator" -> sampleSourceGenerator,
"semanticdbVersion" -> Dependencies.semanticdbVersion,
junitTestJars,
BuildKeys.bloopCoursierJson,
(ThisBuild / Keys.baseDirectory)
Expand Down
8 changes: 5 additions & 3 deletions project/Dependencies.scala
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
package build

import sbt.librarymanagement.syntax.stringToOrganization
import sbt.librarymanagement.CrossVersion
import sbt.Provided

object Dependencies {
val Scala211Version = "2.11.12"
val Scala212Version = "2.12.17"
val Scala213Version = "2.13.8"
val Scala212Version = "2.12.18"
val Scala213Version = "2.13.11"

val SbtVersion = "1.3.3"

Expand Down Expand Up @@ -46,7 +47,7 @@ object Dependencies {
val ztExecVersion = "1.12"
val debugAdapterVersion = "3.1.3"
val bloopConfigVersion = "1.5.5"

val semanticdbVersion = "4.7.8"
val zinc = "org.scala-sbt" %% "zinc" % zincVersion
val bsp4s = "ch.epfl.scala" %% "bsp4s" % bspVersion
val bsp4j = "ch.epfl.scala" % "bsp4j" % bspVersion
Expand Down Expand Up @@ -95,6 +96,7 @@ object Dependencies {
val scalaJsSbtTestAdapter1 =
"org.scala-js" %% "scalajs-sbt-test-adapter" % scalaJs1Version % Provided
val scalaJsLogging1 = "org.scala-js" %% "scalajs-logging" % "1.1.1" % Provided
val semanticdb = "org.scalameta" % "semanticdb" % semanticdbVersion cross CrossVersion.full

val xxHashLibrary = "net.jpountz.lz4" % "lz4" % xxHashVersion
val zt = "org.zeroturnaround" % "zt-zip" % ztVersion
Expand Down

0 comments on commit 02774ea

Please sign in to comment.