Skip to content

Commit

Permalink
chore: Test Metals on JDK 21
Browse files Browse the repository at this point in the history
  • Loading branch information
tgodzik committed Jan 30, 2025
1 parent 1ac0c13 commit 7e9dc9a
Show file tree
Hide file tree
Showing 13 changed files with 106 additions and 62 deletions.
38 changes: 23 additions & 15 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,16 @@ jobs:
fail-fast: false
matrix:
os: [windows-latest, macOS-latest, ubuntu-latest]
java: ["17"]
java: ["21"]
shard: [1, 2]
include:
os: ubuntu-latest
java: "17"
shard: 1
include:
os: ubuntu-latest
java: "17"
shard: 2
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
Expand Down Expand Up @@ -61,14 +69,14 @@ jobs:
command: bin/test.sh 'slow/testOnly -- tests.gradle.*'
name: Gradle MacOS integration
os: macOS-latest
java: "17"
java: "21"
- type: sbt
command: |
bin/test.sh +sbt-metals/publishLocal
bin/test.sh 'slow/testOnly -- tests.sbt.*'
name: Sbt integration
os: ubuntu-latest
java: "17"
java: "21"
- type: sbt-metals jdk8
command: bin/test.sh sbt-metals/scripted
name: Sbt-metals/scripted jdk11
Expand All @@ -78,37 +86,37 @@ jobs:
command: bin/test.sh '++3.6.2; sbt-metals/scripted'
name: sbt-metals/scripted (Sbt 2)
os: ubuntu-latest
java: "17"
java: "21"
- type: maven
command: bin/test.sh 'slow/testOnly -- tests.maven.*'
name: Maven integration
os: ubuntu-latest
java: "17"
java: "21"
- type: gradle
command: bin/test.sh 'slow/testOnly -- tests.gradle.*'
name: Gradle integration
os: ubuntu-latest
java: "17"
java: "21"
- type: mill
command: bin/test.sh 'slow/testOnly -- tests.mill.*'
name: Mill integration
os: ubuntu-latest
java: "17"
java: "21"
- type: bazel
command: bin/test.sh 'slow/testOnly -- tests.bazel.*'
name: Bazel integration
os: ubuntu-latest
java: "17"
java: "21"
- type: scalacli
command: bin/test.sh 'slow/testOnly -- tests.scalacli.*'
name: Scala CLI integration
os: ubuntu-latest
java: "17"
java: "21"
- type: feature
command: bin/test.sh 'slow/testOnly -- tests.feature.*'
name: LSP integration tests
os: ubuntu-latest
java: "17"
java: "21"
- type: cross
command: sbt +cross/test
name: Scala cross tests
Expand All @@ -118,27 +126,27 @@ jobs:
command: sbt javapc/test
name: Scala javapc tests
os: ubuntu-latest
java: "17"
java: "21"
- type: cross-test-2-11
command: sbt cross-test-2-11
name: Scala 2.11 cross tests
os: ubuntu-latest
java: "17"
java: "21"
- type: scalafix
command: sbt scalafixCheck docs/docusaurusCreateSite
name: Scalafix and docs
os: ubuntu-latest
java: "17"
java: "21"
- type: scalafmt
command: ./bin/scalafmt --test
name: Formatting
os: ubuntu-latest
java: "17"
java: "21"
- type: MiMa
command: sbt interfaces/mimaReportBinaryIssues
name: MiMa
os: ubuntu-latest
java: "17"
java: "21"
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
Expand Down
1 change: 1 addition & 0 deletions tests/javapc/src/main/scala/tests/pc/BaseJavaPCSuite.scala
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import scala.meta.pc.PresentationCompiler
import coursierapi.Dependency
import tests.BaseSuite
import tests.PCSuite
import scala.util.Properties

abstract class BaseJavaPCSuite extends BaseSuite with PCSuite {

Expand Down
8 changes: 6 additions & 2 deletions tests/javapc/src/test/scala/hover/HoverTermSuite.scala
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,11 @@ class HoverTermSuite extends BaseJavaHoverSuite {
| List<Integer> list = Li@@st.of(1, 2, 3);
| }
|}
|""".stripMargin,
"""public interface java.util.List<E> extends java.util.Collection<E>""".javaHover,
|""".stripMargin, {
if (isJava21)
"public interface java.util.List<E> extends java.util.SequencedCollection<E>".javaHover
else
"""public interface java.util.List<E> extends java.util.Collection<E>""".javaHover
},
)
}
3 changes: 3 additions & 0 deletions tests/mtest/src/main/scala/tests/BaseSuite.scala
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ abstract class BaseSuite extends munit.FunSuite with Assertions {
def isJava22: Boolean =
Properties.isJavaAtLeast("22")

def isJava21: Boolean =
Properties.isJavaAtLeast("21")

def isWindows: Boolean =
Properties.isWin

Expand Down
2 changes: 1 addition & 1 deletion tests/slow/src/test/scala/tests/mill/MillServerSuite.scala
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ class MillServerSuite
}

val versionsToTest: List[String] =
List("0.10.0", "0.10.8", supportedBspVersion)
List("0.11.13", supportedBspVersion)

versionsToTest.foreach(testGenerationAndConnection)

Expand Down
3 changes: 2 additions & 1 deletion tests/unit/src/main/scala/tests/debug/BaseStepDapSuite.scala
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,8 @@ abstract class BaseStepDapSuite(
main = "a.Main",
instrument = steps => {
val (javaLibFile, javaLibLine) =
if (isJava17) ("java.base/java/io/PrintStream.java", 1027)
if (isJava21) ("java.base/java/io/PrintStream.java", 1167)
else if (isJava17) ("java.base/java/io/PrintStream.java", 1027)
else ("java.base/java/io/PrintStream.java", 881)
steps
.at("a/src/main/scala/Main.scala", line = 5)(StepIn)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import scala.meta.internal.metals.MetalsEnrichments._
import scala.meta.internal.metals.PositionSyntax._
import scala.meta.internal.semver.SemVer
import scala.meta.io.AbsolutePath
import scala.meta.internal.metals.BuildInfo as V

import org.eclipse.lsp4j.Location

Expand All @@ -23,15 +24,12 @@ class FindTextInDependencyJarsSuite
"find exact string match in .conf file inside jar",
withoutVirtualDocs = true,
) {
val isJavaAtLeast9 = scala.util.Properties.isJavaAtLeast(9.toString)
val isJavaAtLeast17 = scala.util.Properties.isJavaAtLeast(17.toString)

for {
_ <- initialize(
s"""/metals.json
|{
| "a": {
| "scalaVersion": "2.12.4",
| "scalaVersion": "${V.scala212}",
| "libraryDependencies": ["com.typesafe.akka::akka-actor-typed:2.6.16"]
| }
|}
Expand Down Expand Up @@ -68,19 +66,20 @@ class FindTextInDependencyJarsSuite
assertLocations(
jdkLocations, {
val line =
if (
if (isJava21) 1487
else if (
SemVer.isCompatibleVersion(
"17.0.8",
// for 17.0.8+7 or 17.0.7-7 the suffix is irrelevant here
scala.util.Properties.javaVersion.replaceAll("(\\+|\\-).*", ""),
)
) 1449
else if (isJavaAtLeast17) 1445
else if (isJavaAtLeast9) 626
else if (isJava17) 1445
else if (isJava11) 626
else 578

val pathPrefix =
if (isJavaAtLeast9) "/java.base/"
if (isJava11) "/java.base/"
else "/"

s"""|src.zip${pathPrefix}java/lang/String.java:$line:5: info: result
Expand Down
4 changes: 2 additions & 2 deletions tests/unit/src/test/scala/tests/ImplementationLspSuite.scala
Original file line number Diff line number Diff line change
Expand Up @@ -640,15 +640,14 @@ class ImplementationLspSuite extends BaseImplementationSuite("implementation") {
|""".stripMargin,
)

if (isJava17) {
if (isJava21) {
checkSymbols(
"exception",
"""package a
|class MyException extends Excep@@tion
|""".stripMargin,
"""|a/MyException#
|com/sun/beans/finder/SignatureException#
|com/sun/imageio/plugins/jpeg/JFIFMarkerSegment#IllegalThumbException#
|com/sun/jdi/AbsentInformationException#
|com/sun/jdi/ClassNotLoadedException#
|com/sun/jdi/ClassNotPreparedException#
Expand All @@ -663,6 +662,7 @@ class ImplementationLspSuite extends BaseImplementationSuite("implementation") {
|com/sun/jdi/InvocationException#
|com/sun/jdi/NativeMethodException#
|com/sun/jdi/ObjectCollectedException#
|com/sun/jdi/OpaqueFrameException#
|com/sun/jdi/VMCannotBeModifiedException#
|com/sun/jdi/VMDisconnectedException#
|com/sun/jdi/VMMismatchException#
Expand Down
21 changes: 13 additions & 8 deletions tests/unit/src/test/scala/tests/JavaDefinitionSuite.scala
Original file line number Diff line number Diff line change
Expand Up @@ -37,16 +37,24 @@ class JavaDefinitionSuite extends BaseLspSuite("java-definition") {
withoutVirtualDocs = true,
)

val expectedResult =
if (isJava21)
s"""|src.zip/${javaBasePrefix}java/lang/AbstractStringBuilder.java info: result
|abstract sealed class AbstractStringBuilder implements Appendable, CharSequence
| ^^^^^^^^^^^^^^^^^^^^^
|""".stripMargin
else
s"""|src.zip/${javaBasePrefix}java/lang/AbstractStringBuilder.java info: result
|abstract class AbstractStringBuilder implements Appendable, CharSequence {
| ^^^^^^^^^^^^^^^^^^^^^
|""".stripMargin
check(
"jdk-String-patch-module",
"java.lang.String",
s"""|${javaBasePrefix}java/lang/String.java
|private boolean nonSyncContentEquals(@@AbstractStringBuilder sb) {
|""".stripMargin,
s"""|src.zip/${javaBasePrefix}java/lang/AbstractStringBuilder.java info: result
|abstract class AbstractStringBuilder implements Appendable, CharSequence {
| ^^^^^^^^^^^^^^^^^^^^^
|""".stripMargin,
expectedResult,
)

check(
Expand All @@ -55,10 +63,7 @@ class JavaDefinitionSuite extends BaseLspSuite("java-definition") {
s"""|${javaBasePrefix}java/lang/String.java
|private boolean nonSyncContentEquals(@@AbstractStringBuilder sb) {
|""".stripMargin,
s"""|src.zip/${javaBasePrefix}java/lang/AbstractStringBuilder.java info: result
|abstract class AbstractStringBuilder implements Appendable, CharSequence {
| ^^^^^^^^^^^^^^^^^^^^^
|""".stripMargin,
expectedResult,
)

check(
Expand Down
4 changes: 2 additions & 2 deletions tests/unit/src/test/scala/tests/RemovedScalaLspSuite.scala
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ class RemovedScalaLspSuite extends BaseLspSuite("cascade") {
s"""
|/metals.json
|{
| "a": { "scalaVersion" : "2.13.1" }
| "a": { "scalaVersion" : "2.13.10" }
|}
|/a/src/main/scala/a/A.scala
|$fileContents
Expand All @@ -51,7 +51,7 @@ class RemovedScalaLspSuite extends BaseLspSuite("cascade") {
_ = assertNoDiff(client.workspaceDiagnostics, "")
_ = assertNoDiff(
client.workspaceMessageRequests,
Messages.DeprecatedRemovedScalaVersion.message(Set("2.13.1")),
Messages.DeprecatedRemovedScalaVersion.message(Set("2.13.10")),
)
// document highlight is available in 0.11.10 for 3.0.0
_ <- server.assertHighlight(
Expand Down
5 changes: 3 additions & 2 deletions tests/unit/src/test/scala/tests/RenameFilesLspSuite.scala
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package tests

import java.nio.file.Files
import scala.meta.internal.metals.BuildInfo as V

class RenameFilesLspSuite extends BaseRenameFilesLspSuite("rename_files") {
private val prefix = "a/src/main/scala"
Expand Down Expand Up @@ -749,7 +750,7 @@ class RenameFilesLspSuite extends BaseRenameFilesLspSuite("rename_files") {
"A.B.*\nimport A.B.given" -> "C.D.given\nimport C.D.Sun",
),
sourcesAreCompiled = true,
scalaVersion = Some("3.2.0"),
scalaVersion = Some(V.scala3),
)

renamed(
Expand Down Expand Up @@ -813,7 +814,7 @@ class RenameFilesLspSuite extends BaseRenameFilesLspSuite("rename_files") {
Map(s"$prefix/A/B/Solaris.scala" -> s"$prefix/A/D/Solaris.scala"),
expectedRenames = Map("B" -> "D", "//" -> "import D.{Solaris, given}\n//"),
sourcesAreCompiled = true,
scalaVersion = Some("3.2.0"),
scalaVersion = Some(V.scala3),
)

renamed(
Expand Down
48 changes: 33 additions & 15 deletions tests/unit/src/test/scala/tests/WorkspaceSymbolLspSuite.scala
Original file line number Diff line number Diff line change
Expand Up @@ -308,6 +308,38 @@ class WorkspaceSymbolLspSuite extends BaseLspSuite("workspace-symbol") {
} yield ()
}

val expectedExcluded =
if (isJava21)
"""|scala.concurrent.Future
|scala.concurrent.Future
|java.util.concurrent.Future
|scala.sys.process.ProcessImpl#Future
|scala.jdk.FutureConverters.FutureOps
|java.util.concurrent.FutureTask
|java.util.concurrent.RunnableFuture
|java.util.concurrent.ExecutorCompletionService#QueueingFuture
|java.util.concurrent.ScheduledFuture
|scala.jdk.FutureConverters
|scala.jdk.javaapi.FutureConverters
|java.util.concurrent.CompletableFuture
|java.util.concurrent.ThreadPerTaskExecutor#ThreadBoundFuture
|java.util.concurrent.ScheduledThreadPoolExecutor#ScheduledFutureTask
|""".stripMargin
else """|scala.concurrent.Future
|scala.concurrent.Future
|java.util.concurrent.Future
|scala.sys.process.ProcessImpl#Future
|scala.jdk.FutureConverters.FutureOps
|java.util.concurrent.FutureTask
|java.util.concurrent.RunnableFuture
|java.util.concurrent.ExecutorCompletionService#QueueingFuture
|java.util.concurrent.ScheduledFuture
|scala.jdk.FutureConverters
|scala.jdk.javaapi.FutureConverters
|java.util.concurrent.CompletableFuture
|java.util.concurrent.ScheduledThreadPoolExecutor#ScheduledFutureTask
|scala.concurrent.impl.FutureConvertersImpl
|""".stripMargin
test("excluded") {
cleanWorkspace()
for {
Expand All @@ -323,21 +355,7 @@ class WorkspaceSymbolLspSuite extends BaseLspSuite("workspace-symbol") {
_ <- server.didOpen("a/src/main/scala/a/Before.scala")
_ = assertNoDiff(
server.workspaceSymbol("Future"),
"""|scala.concurrent.Future
|scala.concurrent.Future
|java.util.concurrent.Future
|scala.sys.process.ProcessImpl#Future
|scala.jdk.FutureConverters.FutureOps
|java.util.concurrent.FutureTask
|java.util.concurrent.RunnableFuture
|java.util.concurrent.ExecutorCompletionService#QueueingFuture
|java.util.concurrent.ScheduledFuture
|scala.jdk.FutureConverters
|scala.jdk.javaapi.FutureConverters
|java.util.concurrent.CompletableFuture
|java.util.concurrent.ScheduledThreadPoolExecutor#ScheduledFutureTask
|scala.concurrent.impl.FutureConvertersImpl
|""".stripMargin,
expectedExcluded,
)
_ <- server.didChangeConfiguration(
"""|{
Expand Down
Loading

0 comments on commit 7e9dc9a

Please sign in to comment.