From cf8c9eb0757b204b6a1a16014eb9b260be7ea7f8 Mon Sep 17 00:00:00 2001
From: Oleksandr Karpovich <a.n.karpovich@gmail.com>
Date: Mon, 18 Dec 2023 14:14:08 +0300
Subject: [PATCH] Update Kotlin and Compose in composable-test-cases (#4046)

Co-authored-by: Oleksandr.Karpovich <oleksandr.karpovich@jetbrains.com>
---
 .../src/main/kotlin/TargetsConfiguration.kt   | 19 ++++++++++++++-----
 .../common/build.gradle.kts                   |  4 ++--
 .../composable-test-cases/gradle.properties   |  8 +++++---
 .../gradle/libs.versions.toml                 |  5 +++++
 .../expectActual/lib/build.gradle.kts         |  9 +++++++++
 5 files changed, 35 insertions(+), 10 deletions(-)
 create mode 100644 compose/integrations/composable-test-cases/gradle/libs.versions.toml

diff --git a/compose/integrations/composable-test-cases/buildSrc/src/main/kotlin/TargetsConfiguration.kt b/compose/integrations/composable-test-cases/buildSrc/src/main/kotlin/TargetsConfiguration.kt
index 8102ec5e536..fbaf1906383 100644
--- a/compose/integrations/composable-test-cases/buildSrc/src/main/kotlin/TargetsConfiguration.kt
+++ b/compose/integrations/composable-test-cases/buildSrc/src/main/kotlin/TargetsConfiguration.kt
@@ -7,6 +7,13 @@ import org.jetbrains.kotlin.gradle.kpm.external.project
 import org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler
 import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
 import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSetContainer
+import org.jetbrains.kotlin.gradle.plugin.extraProperties
+import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl
+
+val Project.coroutinesVersion: String
+    get() {
+        return extraProperties.properties["kotlinx.coroutines.version"] as String
+    }
 
 val Project.isInIdea: Boolean
     get() {
@@ -19,7 +26,7 @@ val Project.isFailingJsCase: Boolean
 val Project.isMingwX64Enabled: Boolean
     get() = this.isInIdea
 
-@OptIn(ExternalVariantApi::class)
+@OptIn(ExternalVariantApi::class, ExperimentalWasmDsl::class)
 fun KotlinMultiplatformExtension.configureTargets() {
     jvm("desktop")
     configureJsTargets()
@@ -53,8 +60,10 @@ fun KotlinDependencyHandler.getCommonLib(): ProjectDependency {
 }
 
 fun KotlinSourceSet.configureCommonTestDependencies() {
-    dependencies {
-        implementation(kotlin("test"))
-        implementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.4")
+    with(project) {
+        dependencies {
+            implementation(kotlin("test"))
+            implementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutinesVersion")
+        }
     }
-}
+}
\ No newline at end of file
diff --git a/compose/integrations/composable-test-cases/common/build.gradle.kts b/compose/integrations/composable-test-cases/common/build.gradle.kts
index b4f0309b989..399f2724bdf 100644
--- a/compose/integrations/composable-test-cases/common/build.gradle.kts
+++ b/compose/integrations/composable-test-cases/common/build.gradle.kts
@@ -13,8 +13,8 @@ kotlin {
         val commonMain by getting {
             dependencies {
                 implementation(compose.runtime)
-                implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4")
-                implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.4.0")
+                implementation(libs.kotlinx.datetime)
+                implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutinesVersion")
             }
         }
         val commonTest by getting {
diff --git a/compose/integrations/composable-test-cases/gradle.properties b/compose/integrations/composable-test-cases/gradle.properties
index dad43d287f9..dc6f58ebc43 100644
--- a/compose/integrations/composable-test-cases/gradle.properties
+++ b/compose/integrations/composable-test-cases/gradle.properties
@@ -1,12 +1,14 @@
 org.gradle.jvmargs=-Xmx2048M -XX:MaxMetaspaceSize=512m
 kotlin.code.style=official
 android.useAndroidX=true
-kotlin.version=1.9.20
+kotlin.version=1.9.21
 agp.version=7.3.0
-compose.version=1.5.10
+compose.version=1.6.0-dev1334
+
+kotlinx.coroutines.version=1.8.0-RC
 
 #empty by default - a default version will be used
-#compose.kotlinCompilerPluginVersion=23.11.20
+#compose.kotlinCompilerPluginVersion=23.12.18
 compose.kotlinCompilerPluginVersion=1.5.3
 
 # default|failingJs - see enum class CasesToRun
diff --git a/compose/integrations/composable-test-cases/gradle/libs.versions.toml b/compose/integrations/composable-test-cases/gradle/libs.versions.toml
new file mode 100644
index 00000000000..7dbc91539bc
--- /dev/null
+++ b/compose/integrations/composable-test-cases/gradle/libs.versions.toml
@@ -0,0 +1,5 @@
+[versions]
+kotlinx-datetime = "0.5.0"
+
+[libraries]
+kotlinx-datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "kotlinx-datetime" }
\ No newline at end of file
diff --git a/compose/integrations/composable-test-cases/testcases/expectActual/lib/build.gradle.kts b/compose/integrations/composable-test-cases/testcases/expectActual/lib/build.gradle.kts
index df91a04d1fc..97eff1984a0 100644
--- a/compose/integrations/composable-test-cases/testcases/expectActual/lib/build.gradle.kts
+++ b/compose/integrations/composable-test-cases/testcases/expectActual/lib/build.gradle.kts
@@ -23,6 +23,15 @@ kotlin {
         val iosMain by getting {
             dependsOn(nativeMain)
         }
+        val iosX64Main by getting {
+            dependsOn(iosMain)
+        }
+        val iosArm64Main by getting {
+            dependsOn(iosMain)
+        }
+        val iosSimulatorArm64Main by getting {
+            dependsOn(iosMain)
+        }
         val linuxX64Main by getting {
             dependsOn(nativeMain)
         }