diff --git a/build.gradle.kts b/build.gradle.kts index 41dda4f5e6d..f2e3c2645ff 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -92,7 +92,7 @@ apply(from = "gradle/compatibility.gradle") plugins { id("org.jetbrains.dokka") version "1.7.20" apply false - id("org.jetbrains.kotlinx.binary-compatibility-validator") version "0.12.1" + id("org.jetbrains.kotlinx.binary-compatibility-validator") version "0.13.2" id("kotlinx-atomicfu") version "0.19.0" apply false id("com.osacky.doctor") version "0.8.1" } diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index bd3faa9e984..11845b73978 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -3,8 +3,8 @@ */ plugins { - id("org.gradle.kotlin.kotlin-dsl") version "3.2.4" - kotlin("plugin.serialization") version "1.7.21" + id("org.gradle.kotlin.kotlin-dsl") version "4.1.0" + kotlin("plugin.serialization") version "1.9.0" } val buildSnapshotTrain = properties["build_snapshot_train"]?.toString()?.toBoolean() == true @@ -24,8 +24,8 @@ sourceSets.main { val ktor_version = "2.3.2" dependencies { - implementation(kotlin("gradle-plugin", "1.8.22")) - implementation(kotlin("serialization", "1.8.22")) + implementation(kotlin("gradle-plugin", "1.9.10")) + implementation(kotlin("serialization", "1.9.10")) val ktlint_version = libs.versions.ktlint.version.get() implementation("org.jmailen.gradle:kotlinter-gradle:$ktlint_version") diff --git a/buildSrc/src/main/kotlin/CommonConfig.kt b/buildSrc/src/main/kotlin/CommonConfig.kt index 25aed745d58..678cf75ac5d 100644 --- a/buildSrc/src/main/kotlin/CommonConfig.kt +++ b/buildSrc/src/main/kotlin/CommonConfig.kt @@ -9,13 +9,13 @@ fun Project.configureCommon() { kotlin { sourceSets { - val commonMain by getting { + commonMain { dependencies { api("org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version") } } - val commonTest by getting { + commonTest { dependencies { implementation(kotlin("test")) } diff --git a/buildSrc/src/main/kotlin/JsConfig.kt b/buildSrc/src/main/kotlin/JsConfig.kt index b5cefa4ffeb..3a48d2fe5f1 100644 --- a/buildSrc/src/main/kotlin/JsConfig.kt +++ b/buildSrc/src/main/kotlin/JsConfig.kt @@ -27,20 +27,24 @@ private fun Project.configureJsTasks() { kotlin { js(IR) { nodejs { - testTask { - useMocha { - timeout = "10000" + testTask( + Action { + useMocha { + timeout = "10000" + } } - } + ) } browser { - testTask { - useKarma { - useChromeHeadless() - useConfigDirectory(File(project.rootProject.projectDir, "karma")) + testTask( + Action { + useKarma { + useChromeHeadless() + useConfigDirectory(File(project.rootProject.projectDir, "karma")) + } } - } + ) } binaries.library() diff --git a/buildSrc/src/main/kotlin/KotlinExtensions.kt b/buildSrc/src/main/kotlin/KotlinExtensions.kt index 47f6fcb9e55..6d4dbd34c81 100644 --- a/buildSrc/src/main/kotlin/KotlinExtensions.kt +++ b/buildSrc/src/main/kotlin/KotlinExtensions.kt @@ -27,6 +27,16 @@ fun KotlinMultiplatformExtension.createCInterop( } } +fun NamedDomainObjectContainer.commonMain(block: KotlinSourceSet.() -> Unit) { + val sourceSet = getByName("commonMain") + block(sourceSet) +} + +fun NamedDomainObjectContainer.commonTest(block: KotlinSourceSet.() -> Unit) { + val sourceSet = getByName("commonTest") + block(sourceSet) +} + fun NamedDomainObjectContainer.jvmAndNixMain(block: KotlinSourceSet.() -> Unit) { val sourceSet = findByName("jvmAndNixMain") ?: getByName("jvmMain") block(sourceSet) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt new file mode 100644 index 00000000000..3ae52dd5b7f --- /dev/null +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -0,0 +1,11 @@ +/* + * Copyright 2014-2023 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +object Versions { + val kotlin = "1.9.10" + val coroutines = "1.7.2" + val slf4j = "1.7.36" + val junit = "4.13.2" + val logback = "1.2.11" +} diff --git a/buildSrc/src/main/kotlin/test/server/ServerUtils.kt b/buildSrc/src/main/kotlin/test/server/ServerUtils.kt index 27030cca246..52063ca535b 100644 --- a/buildSrc/src/main/kotlin/test/server/ServerUtils.kt +++ b/buildSrc/src/main/kotlin/test/server/ServerUtils.kt @@ -29,6 +29,7 @@ fun List.makeString(): String = buildString { } } +@Suppress("DEPRECATION") private fun filenameContentTypeAndContentString(provider: () -> Input, headers: Headers): String { val dispositionHeader: String = headers.getAll(HttpHeaders.ContentDisposition)!!.joinToString(";") val disposition: ContentDisposition = ContentDisposition.parse(dispositionHeader) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 774fae87671..db9a6b825d7 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/ktor-client/ktor-client-winhttp/windows/src/io/ktor/client/engine/winhttp/WinHttpClientEngine.kt b/ktor-client/ktor-client-winhttp/windows/src/io/ktor/client/engine/winhttp/WinHttpClientEngine.kt index acd665c929e..fe3840c2a00 100644 --- a/ktor-client/ktor-client-winhttp/windows/src/io/ktor/client/engine/winhttp/WinHttpClientEngine.kt +++ b/ktor-client/ktor-client-winhttp/windows/src/io/ktor/client/engine/winhttp/WinHttpClientEngine.kt @@ -12,6 +12,7 @@ import io.ktor.client.request.* import io.ktor.util.* import io.ktor.util.date.* import kotlinx.coroutines.* +import kotlin.coroutines.* internal class WinHttpClientEngine( override val config: WinHttpClientEngineConfig @@ -29,6 +30,8 @@ internal class WinHttpClientEngine( } } + override fun toString(): String = "WinHttp" + @OptIn(InternalAPI::class) override suspend fun execute(data: HttpRequestData): HttpResponseData { val callContext = callContext() diff --git a/ktor-server/ktor-server-plugins/ktor-server-call-logging/jvm/test/io/ktor/server/plugins/callloging/CallLoggingTest.kt b/ktor-server/ktor-server-plugins/ktor-server-call-logging/jvm/test/io/ktor/server/plugins/callloging/CallLoggingTest.kt index 515f5e50ed3..0ae8c8581c3 100644 --- a/ktor-server/ktor-server-plugins/ktor-server-call-logging/jvm/test/io/ktor/server/plugins/callloging/CallLoggingTest.kt +++ b/ktor-server/ktor-server-plugins/ktor-server-call-logging/jvm/test/io/ktor/server/plugins/callloging/CallLoggingTest.kt @@ -73,26 +73,26 @@ class CallLoggingTest { testApplication { environment { environment() } application { - hash = this.toString() + hash = hashCode().toString(radix = 16) } } assertTrue(messages.size >= 3, "It should be at least 3 message logged:\n$messages") - assertEquals( - "INFO: Application started: $hash", - messages[messages.size - 3], - "No started message logged:\n$messages" - ) - assertEquals( - "INFO: Application stopping: $hash", - messages[messages.size - 2], - "No stopping message logged:\n$messages" - ) - assertEquals( - "INFO: Application stopped: $hash", - messages[messages.size - 1], - "No stopped message logged:\n$messages" - ) + assertTrue { + messages[messages.size - 3].startsWith( + "INFO: Application started: class io.ktor.server.application.Application(0x$hash)" + ) + } + assertTrue { + messages[messages.size - 2].startsWith( + "INFO: Application stopping: class io.ktor.server.application.Application(0x$hash)" + ) + } + assertTrue { + messages[messages.size - 1].startsWith( + "INFO: Application stopped: class io.ktor.server.application.Application(0x$hash)" + ) + } } @Test @@ -374,7 +374,7 @@ class CallLoggingTest { } } } - var hash: String? = null + lateinit var hash: String testApplication { environment { @@ -385,11 +385,11 @@ class CallLoggingTest { } } } - application { hash = this.toString() } + application { hash = hashCode().toString(radix = 16) } } assertTrue(customMessages.isNotEmpty()) - assertTrue(customMessages.all { it.startsWith("CUSTOM TRACE:") && it.contains(hash!!) }) + assertTrue(customMessages.all { it.startsWith("CUSTOM TRACE:") && it.contains(hash) }) assertTrue(messages.isEmpty()) } diff --git a/ktor-server/ktor-server-plugins/ktor-server-jte/build.gradle.kts b/ktor-server/ktor-server-plugins/ktor-server-jte/build.gradle.kts index 7a805708671..51b54c0819e 100644 --- a/ktor-server/ktor-server-plugins/ktor-server-jte/build.gradle.kts +++ b/ktor-server/ktor-server-plugins/ktor-server-jte/build.gradle.kts @@ -4,12 +4,12 @@ kotlin.sourceSets { val jteVersion = "2.3.2" - val jvmMain by getting { + jvmMain { dependencies { api("gg.jte:jte:$jteVersion") } } - val jvmTest by getting { + jvmTest { dependencies { api(project(":ktor-server:ktor-server-plugins:ktor-server-status-pages")) api(project(":ktor-server:ktor-server-plugins:ktor-server-compression"))