diff --git a/tests/buildTools/src/test/scala/tests/GradleBuildToolSuite.scala b/tests/buildTools/src/test/scala/tests/GradleBuildToolSuite.scala index a99a4383f..f9b23f8ef 100644 --- a/tests/buildTools/src/test/scala/tests/GradleBuildToolSuite.scala +++ b/tests/buildTools/src/test/scala/tests/GradleBuildToolSuite.scala @@ -360,11 +360,40 @@ abstract class GradleBuildToolSuite(gradle: Tool.Gradle) gradleVersions = List(Gradle8, Gradle7, Gradle6), tools = List(Scala2_12_12) ) + checkGradleBuild( "kotlin", - """|/build.gradle + s"""|/build.gradle |plugins { - | id 'org.jetbrains.kotlin.jvm' version '1.8.0' + | id 'org.jetbrains.kotlin.jvm' version '${Kotlin18.version}' + |} + |repositories { + | mavenCentral() + |} + |/src/main/java/foo/JExample.java + |package foo; + ||public class JExample {} + |/src/main/kotlin/foo/Example.kt + |package foo + |object Example {} + |/src/test/java/foo/JExampleSuite.java + |package foo; + |public class JExampleSuite {} + |/src/test/kotlin/foo/ExampleSuite.kt + |package foo + |class ExampleSuite {} + |""".stripMargin, + expectedSemanticdbFiles = 4, + gradleVersions = List(Gradle6, Gradle7, Gradle8), + tools = List(Kotlin18) + ) + + checkGradleBuild( + "kotlin-k2", + s"""|/build.gradle.kts + |plugins { + | `kotlin-dsl` + | kotlin("jvm") version "${Kotlin192.version}" |} |repositories { | mavenCentral() @@ -383,9 +412,11 @@ abstract class GradleBuildToolSuite(gradle: Tool.Gradle) |class ExampleSuite {} |""".stripMargin, expectedSemanticdbFiles = 4, - gradleVersions = List(Gradle6, Gradle7) + gradleVersions = List(Gradle8), + tools = List(Kotlin192) ) + checkGradleBuild( "implementation-deps", """|/settings.gradle diff --git a/tests/buildTools/src/test/scala/tests/GradleBuildToolSuiteBase.scala b/tests/buildTools/src/test/scala/tests/GradleBuildToolSuiteBase.scala index 516d90b24..b0a264cd7 100644 --- a/tests/buildTools/src/test/scala/tests/GradleBuildToolSuiteBase.scala +++ b/tests/buildTools/src/test/scala/tests/GradleBuildToolSuiteBase.scala @@ -14,7 +14,10 @@ abstract class GradleBuildToolSuiteBase(gradle: Tool.Gradle) } def createEmptyBuildScript(): Unit = { - val script = workingDirectory.resolve("build.gradle") + // We're using settings.gradle instead of build.gradle because it's enough for + // gradle to create a wrapper, and doesn't conflict if the test case uses build.gradle.kts. + // Turns out gradle produces a very confusing error message if you have both build.gradle and build.gradle.kts + val script = workingDirectory.resolve("settings.gradle") Files.createDirectories(script.getParent) Files.write( script, diff --git a/tests/buildTools/src/test/scala/tests/Tool.scala b/tests/buildTools/src/test/scala/tests/Tool.scala index 0b1f56d2d..706ad78bf 100644 --- a/tests/buildTools/src/test/scala/tests/Tool.scala +++ b/tests/buildTools/src/test/scala/tests/Tool.scala @@ -57,6 +57,12 @@ object Tool { case object Scala211 extends Scala("2.11.9", atMostJava(11)) case object Scala3 extends Scala("3.3.3", noRestrictions) + sealed abstract class Kotlin(version: String, support: JVMSupport) + extends Tool("kotlin", version, support) + // See https://stackoverflow.com/a/77179226 + case object Kotlin18 extends Kotlin("1.8.0", atMostJava(19)) + case object Kotlin192 extends Kotlin("1.9.20", atMostJava(21)) + sealed abstract class Mill(version: String, support: JVMSupport) extends Tool("mill", version, support) // See https://docs.scala-lang.org/overviews/jdk-compatibility/overview.html#build-tool-compatibility-table