From a625c5217b4573fa27b8aa8c19d5aea8899e39a4 Mon Sep 17 00:00:00 2001 From: Nicolas Farabegoli Date: Wed, 8 Nov 2023 22:38:24 +0100 Subject: [PATCH] test: fix test multiplatform for ktlin 1.9.20 --- .../test/ktmultiplatform/build.gradle.kts | 86 +++++++++---------- .../test/ktmultiplatform/gradle.properties | 1 + .../src/wasm32Main/kotlin/Platform.kt | 3 - .../gradle/test/ktmultiplatform/test.yaml | 2 - 4 files changed, 44 insertions(+), 48 deletions(-) create mode 100644 src/test/resources/org/danilopianini/gradle/test/ktmultiplatform/gradle.properties delete mode 100644 src/test/resources/org/danilopianini/gradle/test/ktmultiplatform/src/wasm32Main/kotlin/Platform.kt diff --git a/src/test/resources/org/danilopianini/gradle/test/ktmultiplatform/build.gradle.kts b/src/test/resources/org/danilopianini/gradle/test/ktmultiplatform/build.gradle.kts index d094f452..a12074e6 100644 --- a/src/test/resources/org/danilopianini/gradle/test/ktmultiplatform/build.gradle.kts +++ b/src/test/resources/org/danilopianini/gradle/test/ktmultiplatform/build.gradle.kts @@ -1,11 +1,10 @@ -@file:Suppress("UnstableApiUsage") - import org.danilopianini.gradle.mavencentral.DocStyle import org.danilopianini.gradle.mavencentral.JavadocJar import org.jetbrains.kotlin.gradle.plugin.KotlinTarget import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly +import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget +import java.util.* -@Suppress("DSL_SCOPE_VIOLATION") plugins { kotlin("multiplatform") id("org.danilopianini.publish-on-central") @@ -33,43 +32,7 @@ kotlin { nodejs() binaries.library() } - val hostOs = System.getProperty("os.name").trim().toLowerCaseAsciiOnly() - val hostArch = System.getProperty("os.arch").trim().toLowerCaseAsciiOnly() - val nativeTarget: (String, org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget.() -> Unit) -> KotlinTarget = - when (hostOs to hostArch) { - "linux" to "aarch64" -> ::linuxArm64 - "linux" to "amd64" -> ::linuxX64 - "linux" to "arm", "linux" to "arm32" -> ::linuxArm32Hfp - "linux" to "mips", "linux" to "mips32" -> ::linuxMips32 - "linux" to "mipsel", "linux" to "mips32el" -> ::linuxMipsel32 - "mac os x" to "aarch64" -> ::macosArm64 - "mac os x" to "amd64", "mac os x" to "x86_64" -> ::macosX64 - "windows" to "amd64", "windows server 2022" to "amd64" -> ::mingwX64 - "windows" to "x86" -> ::mingwX86 - "windows 11" to "amd64", "windows server 2022" to "amd64" -> ::mingwX64 - "windows 11" to "x86" -> ::mingwX86 - else -> throw GradleException("Host OS '$hostOs' with arch '$hostArch' is not supported in Kotlin/Native.") - } - nativeTarget("native") { - binaries { - sharedLib() - staticLib() - // Remove if it is not executable - "main".let { executable -> - executable { - entryPoint = executable - } - // Enable wasm32 - wasm32 { - binaries { - executable { - entryPoint = executable - } - } - } - } - } - } + sourceSets { val commonMain by getting { dependencies { @@ -86,17 +49,54 @@ kotlin { implementation(kotlin("test-junit")) } } - val nativeMain by getting { + val nativeMain by creating { dependsOn(commonMain) } - val nativeTest by getting { + val nativeTest by creating { dependsOn(commonTest) } } + + val nativeSetup: KotlinNativeTarget.() -> Unit = { + compilations["main"].defaultSourceSet.dependsOn(kotlin.sourceSets["nativeMain"]) + compilations["test"].defaultSourceSet.dependsOn(kotlin.sourceSets["nativeTest"]) + binaries { + executable() + sharedLib() + staticLib() + } + } + + applyDefaultHierarchyTemplate() + /* + * Linux 64 + */ + linuxX64(nativeSetup) + linuxArm64(nativeSetup) + /* + * Win 64 + */ + mingwX64(nativeSetup) + /* + * Apple OSs + */ + macosX64(nativeSetup) + macosArm64(nativeSetup) + iosArm64(nativeSetup) + iosX64(nativeSetup) + iosSimulatorArm64(nativeSetup) + watchosArm32(nativeSetup) + watchosX64(nativeSetup) + watchosSimulatorArm64(nativeSetup) + tvosArm64(nativeSetup) + tvosX64(nativeSetup) + tvosSimulatorArm64(nativeSetup) + targets.all { compilations.all { kotlinOptions { allWarningsAsErrors = true + freeCompilerArgs += listOf("-Xexpect-actual-classes") } } } @@ -114,7 +114,7 @@ publishOnCentral { docStyle.set(DocStyle.HTML) projectLongName.set("Template for Kotlin Multiplatform Project") projectDescription.set("A template repository for Kotlin Multiplatform projects") - repository("https://maven.pkg.github.com/danysk/${rootProject.name}".toLowerCase()) { + repository("https://maven.pkg.github.com/danysk/${rootProject.name}".lowercase()) { user.set("DanySK") password.set(System.getenv("GITHUB_TOKEN")) } diff --git a/src/test/resources/org/danilopianini/gradle/test/ktmultiplatform/gradle.properties b/src/test/resources/org/danilopianini/gradle/test/ktmultiplatform/gradle.properties new file mode 100644 index 00000000..5a4ae9ce --- /dev/null +++ b/src/test/resources/org/danilopianini/gradle/test/ktmultiplatform/gradle.properties @@ -0,0 +1 @@ +kotlin.native.ignoreDisabledTargets=true \ No newline at end of file diff --git a/src/test/resources/org/danilopianini/gradle/test/ktmultiplatform/src/wasm32Main/kotlin/Platform.kt b/src/test/resources/org/danilopianini/gradle/test/ktmultiplatform/src/wasm32Main/kotlin/Platform.kt deleted file mode 100644 index 0454f3f2..00000000 --- a/src/test/resources/org/danilopianini/gradle/test/ktmultiplatform/src/wasm32Main/kotlin/Platform.kt +++ /dev/null @@ -1,3 +0,0 @@ -actual object Platform { - actual val name = "WASM" -} diff --git a/src/test/resources/org/danilopianini/gradle/test/ktmultiplatform/test.yaml b/src/test/resources/org/danilopianini/gradle/test/ktmultiplatform/test.yaml index 54778b78..e3d067bf 100644 --- a/src/test/resources/org/danilopianini/gradle/test/ktmultiplatform/test.yaml +++ b/src/test/resources/org/danilopianini/gradle/test/ktmultiplatform/test.yaml @@ -5,8 +5,6 @@ tests: - 'generateMetadataFileForJvmPublication' - 'generateMetadataFileForKotlinOSSRHPublication' - 'generateMetadataFileForKotlinMultiplatformPublication' - - 'generateMetadataFileForNativePublication' - - 'generateMetadataFileForWasm32Publication' options: - '--stacktrace' expectation: