From 17c20bff9231a4b778967cb4f2f14a4bce94a2ec Mon Sep 17 00:00:00 2001 From: Sebastian Sellmair Date: Fri, 18 Nov 2022 15:14:27 +0100 Subject: [PATCH] [Gradle] Implement integration test for KT-54981 ^KT-54981 Verification Pending --- .../kotlin/gradle/HierarchicalMppIT.kt | 27 +++++++++++++--- .../build.gradle.kts | 32 +++++++++++++++++++ .../settings.gradle.kts | 1 + .../src/commonMain/kotlin/Main.kt | 8 +++++ .../src/jvmMain/kotlin/HostFileSystem.kt | 6 ++++ .../src/nativeMain/kotlin/HostFileSystem.kt | 6 ++++ 6 files changed, 75 insertions(+), 5 deletions(-) create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-54995-compileSharedNative-with-okio/build.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-54995-compileSharedNative-with-okio/settings.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-54995-compileSharedNative-with-okio/src/commonMain/kotlin/Main.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-54995-compileSharedNative-with-okio/src/jvmMain/kotlin/HostFileSystem.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-54995-compileSharedNative-with-okio/src/nativeMain/kotlin/HostFileSystem.kt diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt index b9d3a05c6f9..38bf49e4955 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt @@ -297,6 +297,20 @@ class HierarchicalMppIT : KGPBaseTest() { } } + @GradleTest + @DisplayName("KT-54995: compileAppleMainKotlinMetadata fails on default parameters with `No value passed for parameter 'mustExist'") + fun testCompileSharedNativeSourceSetWithOKIODependency(gradleVersion: GradleVersion) { + project( + projectName = "kt-54995-compileSharedNative-with-okio", + gradleVersion = gradleVersion + ) { + build("assemble") { + assertFileExists(projectPath.resolve("build/libs/test-project-jvm.jar")) + assertFileExists(projectPath.resolve("build/classes/kotlin/metadata/nativeMain/klib/test-project_nativeMain.klib")) + } + } + } + private fun publishThirdPartyLib( projectName: String = "third-party-lib".withPrefix, withGranularMetadata: Boolean, @@ -731,9 +745,9 @@ class HierarchicalMppIT : KGPBaseTest() { val iosX64ModuleSources = macOnly { listOf("test/lib-iosx64/1.0/lib-iosx64-1.0-sources.jar") } val iosArm64ModuleSources = macOnly { listOf("test/lib-iosarm64/1.0/lib-iosarm64-1.0-sources.jar") } val allPublishedSources = rootModuleSources + - jvmModuleSources + jvm2ModuleSources + - linuxX64ModuleSources + linuxArm64ModuleSources + - iosX64ModuleSources + iosArm64ModuleSources + jvmModuleSources + jvm2ModuleSources + + linuxX64ModuleSources + linuxArm64ModuleSources + + iosX64ModuleSources + iosArm64ModuleSources infix fun Pair>.and(that: List) = first to (second + that) @@ -847,7 +861,8 @@ class HierarchicalMppIT : KGPBaseTest() { @DisplayName("KT-51946: Temporarily mark HMPP tasks as notCompatibleWithConfigurationCache for Gradle 7.4") fun testHmppTasksAreNotIncludedInGradleConfigurationCache(gradleVersion: GradleVersion, @TempDir tempDir: Path) { with(project("hmppGradleConfigurationCache", gradleVersion = gradleVersion, localRepoDir = tempDir)) { - val options = buildOptions.copy(configurationCache = true, configurationCacheProblems = BaseGradleIT.ConfigurationCacheProblems.FAIL) + val options = + buildOptions.copy(configurationCache = true, configurationCacheProblems = BaseGradleIT.ConfigurationCacheProblems.FAIL) build(":lib:publish") { assertTasksExecuted(":lib:publish") @@ -873,6 +888,7 @@ class HierarchicalMppIT : KGPBaseTest() { } } } + @GradleTest @GradleTestVersions(maxVersion = TestVersions.Gradle.G_7_3) @DisplayName("KT-51946: Print warning on tasks that are not compatible with configuration cache") @@ -885,7 +901,8 @@ class HierarchicalMppIT : KGPBaseTest() { assertOutputDoesNotContain("""Task \S+ is not compatible with configuration cache""".toRegex()) } - val options = buildOptions.copy(configurationCache = true, configurationCacheProblems = BaseGradleIT.ConfigurationCacheProblems.FAIL) + val options = + buildOptions.copy(configurationCache = true, configurationCacheProblems = BaseGradleIT.ConfigurationCacheProblems.FAIL) buildAndFail("clean", "assemble", buildOptions = options) { assertOutputContains("""Task \S+ is not compatible with configuration cache""".toRegex()) } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-54995-compileSharedNative-with-okio/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-54995-compileSharedNative-with-okio/build.gradle.kts new file mode 100644 index 00000000000..e5daeb4a5c0 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-54995-compileSharedNative-with-okio/build.gradle.kts @@ -0,0 +1,32 @@ +plugins { + id("org.jetbrains.kotlin.multiplatform") +} + +repositories { + mavenLocal() + mavenCentral() +} + +kotlin { + jvm() + linuxX64() + mingwX64() + + sourceSets { + val commonMain = getByName("commonMain") { + dependencies { + implementation("com.squareup.okio:okio:3.2.0") + } + } + + val nativeMain = create("nativeMain") { + dependsOn(commonMain) + } + getByName("linuxX64Main") { + dependsOn(nativeMain) + } + getByName("mingwX64Main") { + dependsOn(nativeMain) + } + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-54995-compileSharedNative-with-okio/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-54995-compileSharedNative-with-okio/settings.gradle.kts new file mode 100644 index 00000000000..1f334d60128 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-54995-compileSharedNative-with-okio/settings.gradle.kts @@ -0,0 +1 @@ +rootProject.name = "test-project" \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-54995-compileSharedNative-with-okio/src/commonMain/kotlin/Main.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-54995-compileSharedNative-with-okio/src/commonMain/kotlin/Main.kt new file mode 100644 index 00000000000..4f6771b6c48 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-54995-compileSharedNative-with-okio/src/commonMain/kotlin/Main.kt @@ -0,0 +1,8 @@ +import okio.FileSystem +import okio.Path.Companion.toPath + +expect val HostFileSystem: FileSystem + +fun main() { + HostFileSystem.delete("toto".toPath()) +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-54995-compileSharedNative-with-okio/src/jvmMain/kotlin/HostFileSystem.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-54995-compileSharedNative-with-okio/src/jvmMain/kotlin/HostFileSystem.kt new file mode 100644 index 00000000000..9e6e8124ee6 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-54995-compileSharedNative-with-okio/src/jvmMain/kotlin/HostFileSystem.kt @@ -0,0 +1,6 @@ +import okio.FileSystem + +actual val HostFileSystem: FileSystem + get() = FileSystem.SYSTEM + +fun useCommonMain() = main() \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-54995-compileSharedNative-with-okio/src/nativeMain/kotlin/HostFileSystem.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-54995-compileSharedNative-with-okio/src/nativeMain/kotlin/HostFileSystem.kt new file mode 100644 index 00000000000..9e6e8124ee6 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-54995-compileSharedNative-with-okio/src/nativeMain/kotlin/HostFileSystem.kt @@ -0,0 +1,6 @@ +import okio.FileSystem + +actual val HostFileSystem: FileSystem + get() = FileSystem.SYSTEM + +fun useCommonMain() = main() \ No newline at end of file