diff --git a/src/functionalTest/kotlin/kotlinx/validation/test/KLibVerificationTests.kt b/src/functionalTest/kotlin/kotlinx/validation/test/KLibVerificationTests.kt index 0baca1fa..7e8d2ec6 100644 --- a/src/functionalTest/kotlin/kotlinx/validation/test/KLibVerificationTests.kt +++ b/src/functionalTest/kotlin/kotlinx/validation/test/KLibVerificationTests.kt @@ -343,7 +343,9 @@ internal class KLibVerificationTests : BaseKotlinGradleTest() { } } - runner.buildAndFail() + runner.buildAndFail().apply { + Assertions.assertThat(output).contains("Unsupported KLib signature version '100500'") + } } @Test @@ -669,4 +671,51 @@ internal class KLibVerificationTests : BaseKotlinGradleTest() { dumpTask = ":klibApiDump" ) } + + @Test + fun `apiDump should work with web targets`() { + val runner = test { + settingsGradleKts { + resolve("/examples/gradle/settings/settings-name-testproject.gradle.kts") + } + buildGradleKts { + resolve("/examples/gradle/base/withNativePlugin.gradle.kts") + resolve("/examples/gradle/configuration/nonNativeKlibTargets/targets.gradle.kts") + } + kotlin("AnotherBuildConfig.kt", "commonMain") { + resolve("/examples/classes/AnotherBuildConfig.kt") + } + runner { + arguments.add(":apiDump") + } + } + + checkKlibDump(runner.build(), "/examples/classes/AnotherBuildConfig.klib.web.dump") + } + + @Test + fun `apiCheck should work with web targets`() { + val runner = test { + settingsGradleKts { + resolve("/examples/gradle/settings/settings-name-testproject.gradle.kts") + } + buildGradleKts { + resolve("/examples/gradle/base/withNativePlugin.gradle.kts") + resolve("/examples/gradle/configuration/nonNativeKlibTargets/targets.gradle.kts") + } + kotlin("AnotherBuildConfig.kt", "commonMain") { + resolve("/examples/classes/AnotherBuildConfig.kt") + } + abiFile(projectName = "testproject") { + resolve("/examples/classes/AnotherBuildConfig.klib.web.dump") + } + runner { + arguments.add(":apiCheck") + } + } + + runner.build().apply { + assertTaskSuccess(":apiCheck") + } + } } diff --git a/src/functionalTest/resources/examples/classes/AnotherBuildConfig.klib.web.dump b/src/functionalTest/resources/examples/classes/AnotherBuildConfig.klib.web.dump new file mode 100644 index 00000000..f00be63e --- /dev/null +++ b/src/functionalTest/resources/examples/classes/AnotherBuildConfig.klib.web.dump @@ -0,0 +1,17 @@ +// Merged KLib ABI Dump +// Targets: [androidNativeArm32, androidNativeArm64, androidNativeX64, androidNativeX86, js, linuxArm64, linuxX64, mingwX64, wasmJs, wasmWasi] +// Alias: native => [androidNativeArm32, androidNativeArm64, androidNativeX64, androidNativeX86, linuxArm64, linuxX64, mingwX64] +// Alias: androidNative => [androidNativeArm32, androidNativeArm64, androidNativeX64, androidNativeX86] +// Alias: linux => [linuxArm64, linuxX64] +// Rendering settings: +// - Signature version: 2 +// - Show manifest properties: false +// - Show declarations: true + +// Library unique name: +final class org.different.pack/BuildConfig { // org.different.pack/BuildConfig|null[0] + constructor () // org.different.pack/BuildConfig.|(){}[0] + final fun f1(): kotlin/Int // org.different.pack/BuildConfig.f1|f1(){}[0] + final val p1 // org.different.pack/BuildConfig.p1|{}p1[0] + final fun (): kotlin/Int // org.different.pack/BuildConfig.p1.|(){}[0] +} diff --git a/src/functionalTest/resources/examples/gradle/configuration/nonNativeKlibTargets/targets.gradle.kts b/src/functionalTest/resources/examples/gradle/configuration/nonNativeKlibTargets/targets.gradle.kts new file mode 100644 index 00000000..f6030484 --- /dev/null +++ b/src/functionalTest/resources/examples/gradle/configuration/nonNativeKlibTargets/targets.gradle.kts @@ -0,0 +1,10 @@ +/* + * Copyright 2016-2024 JetBrains s.r.o. + * Use of this source code is governed by the Apache 2.0 License that can be found in the LICENSE.txt file. + */ + +kotlin { + wasmWasi() + wasmJs() + js() +} diff --git a/src/functionalTest/resources/examples/gradle/configuration/signatures/invalid.gradle.kts b/src/functionalTest/resources/examples/gradle/configuration/signatures/invalid.gradle.kts index 1576719d..eafc6ccc 100644 --- a/src/functionalTest/resources/examples/gradle/configuration/signatures/invalid.gradle.kts +++ b/src/functionalTest/resources/examples/gradle/configuration/signatures/invalid.gradle.kts @@ -4,5 +4,7 @@ */ configure { - klibSignatureVersion = 100500 + klib { + signatureVersion = 100500 + } }