From cda6881f89ac54cefd0c37dc405147b30f8bc7ce Mon Sep 17 00:00:00 2001 From: Aleksandra Klimantova Date: Mon, 3 Feb 2025 15:34:51 +0100 Subject: [PATCH] KTIJ-32514 Add project import tests for the Gradle project isolation feature (jvm) Some tests are muted until related issues are resolved: - testJvmOnJvmJavaAndKotlin, testJvmSharedResources: muted until KTIJ-32507 is fixed - testSimpleMultiTargetProject: muted until Kotlin is updated to bootstrap version 2.2.0, which includes KT-74727 GitOrigin-RevId: 76e29ecb587d4159b25a1ab7f066e4935455d45d --- .../KotlinMppProjectIsolationTest.kt | 53 +++++++++++++++++-- .../jvmAndKapt/buildSrc/build.gradle.kts | 11 ++++ .../jvmAndKapt/buildSrc/settings.gradle.kts | 18 +++++++ .../src/main/kotlin/kotlin-jvm.gradle.kts | 20 +++++++ .../src/main/kotlin/kotlin-kapt.gradle.kts | 10 ++++ .../jvmAndKapt/gradle.properties | 3 ++ .../jvmAndKapt/gradle/libs.versions.toml | 10 ++++ .../jvmAndKapt/module1/build.gradle.kts | 9 ++++ .../module1/src/main/kotlin/AppComponent.kt | 6 +++ .../module1/src/main/kotlin/Dependency.kt | 5 ++ .../module1/src/main/kotlin/Module1.kt | 5 ++ .../module1/src/test/kotlin/Module1Test.kt | 14 +++++ .../jvmAndKapt/module2/build.gradle.kts | 7 +++ .../module2/src/main/kotlin/Module2.kt | 3 ++ .../module2/src/test/kotlin/Module2Test.kt | 10 ++++ .../jvmAndKapt/settings.gradle.kts | 19 +++++++ .../jvmIncludedBuild/gradle.properties | 1 + .../gradle/libs.versions.toml | 5 ++ .../jvmIncludedBuild/my-app/build.gradle.kts | 8 +++ .../src/main/kotlin/org/example/myapp/Main.kt | 5 ++ .../my-plugin/build.gradle.kts | 19 +++++++ .../my-plugin/settings.gradle.kts | 15 ++++++ .../kotlin/org/example/myplugin/MyPlugin.kt | 18 +++++++ .../jvmIncludedBuild/settings.gradle.kts | 18 +++++++ .../app/build.gradle.kts | 7 +++ .../app/src/main/kotlin/Main.kt | 8 +++ .../jvmOnJvmJavaAndKotlin/gradle.properties | 2 + .../jvmOnJvmJavaAndKotlin/settings.gradle.kts | 19 +++++++ .../utils/build.gradle.kts | 3 ++ .../utils/src/main/java/DateUtils.java | 9 ++++ .../jvmSharedResources/app/build.gradle.kts | 19 +++++++ .../src/main/kotlin/com/example/AppMain.kt | 6 +++ .../common/build.gradle.kts | 37 +++++++++++++ .../src/main/kotlin/com/example/Utils.kt | 7 +++ .../jvmSharedResources/gradle.properties | 1 + .../gradle/libs.versions.toml | 5 ++ .../service/build.gradle.kts | 16 ++++++ .../src/main/kotlin/com/example/ServiceApp.kt | 5 ++ .../jvmSharedResources/settings.gradle.kts | 16 ++++++ .../app/build.gradle.kts | 4 +- .../lib/build.gradle.kts | 4 +- 41 files changed, 451 insertions(+), 9 deletions(-) create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/buildSrc/build.gradle.kts create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/buildSrc/settings.gradle.kts create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/buildSrc/src/main/kotlin/kotlin-jvm.gradle.kts create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/buildSrc/src/main/kotlin/kotlin-kapt.gradle.kts create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/gradle.properties create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/gradle/libs.versions.toml create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/module1/build.gradle.kts create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/module1/src/main/kotlin/AppComponent.kt create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/module1/src/main/kotlin/Dependency.kt create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/module1/src/main/kotlin/Module1.kt create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/module1/src/test/kotlin/Module1Test.kt create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/module2/build.gradle.kts create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/module2/src/main/kotlin/Module2.kt create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/module2/src/test/kotlin/Module2Test.kt create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/settings.gradle.kts create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmIncludedBuild/gradle.properties create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmIncludedBuild/gradle/libs.versions.toml create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmIncludedBuild/my-app/build.gradle.kts create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmIncludedBuild/my-app/src/main/kotlin/org/example/myapp/Main.kt create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmIncludedBuild/my-plugin/build.gradle.kts create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmIncludedBuild/my-plugin/settings.gradle.kts create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmIncludedBuild/my-plugin/src/main/kotlin/org/example/myplugin/MyPlugin.kt create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmIncludedBuild/settings.gradle.kts create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmOnJvmJavaAndKotlin/app/build.gradle.kts create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmOnJvmJavaAndKotlin/app/src/main/kotlin/Main.kt create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmOnJvmJavaAndKotlin/gradle.properties create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmOnJvmJavaAndKotlin/settings.gradle.kts create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmOnJvmJavaAndKotlin/utils/build.gradle.kts create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmOnJvmJavaAndKotlin/utils/src/main/java/DateUtils.java create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/app/build.gradle.kts create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/app/src/main/kotlin/com/example/AppMain.kt create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/common/build.gradle.kts create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/common/src/main/kotlin/com/example/Utils.kt create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/gradle.properties create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/gradle/libs.versions.toml create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/service/build.gradle.kts create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/service/src/main/kotlin/com/example/ServiceApp.kt create mode 100644 plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/settings.gradle.kts diff --git a/plugins/kotlin/gradle/multiplatform-tests/test/org/jetbrains/kotlin/gradle/idea/importing/multiplatformTests/KotlinMppProjectIsolationTest.kt b/plugins/kotlin/gradle/multiplatform-tests/test/org/jetbrains/kotlin/gradle/idea/importing/multiplatformTests/KotlinMppProjectIsolationTest.kt index 8eee78dd9bad..d9d41fa04f85 100644 --- a/plugins/kotlin/gradle/multiplatform-tests/test/org/jetbrains/kotlin/gradle/idea/importing/multiplatformTests/KotlinMppProjectIsolationTest.kt +++ b/plugins/kotlin/gradle/multiplatform-tests/test/org/jetbrains/kotlin/gradle/idea/importing/multiplatformTests/KotlinMppProjectIsolationTest.kt @@ -6,12 +6,13 @@ import org.jetbrains.kotlin.gradle.multiplatformTests.testFeatures.NoErrorEvents import org.jetbrains.kotlin.gradle.multiplatformTests.testFeatures.checkers.highlighting.HighlightingChecker import org.jetbrains.kotlin.test.TestMetadata import org.jetbrains.plugins.gradle.tooling.annotation.PluginTargetVersions +import org.junit.Ignore import org.junit.Test @TestMetadata("multiplatform/core/features/projectIsolation") class KotlinMppProjectIsolationTest : AbstractKotlinMppGradleImportingTest() { @Test - @PluginTargetVersions(pluginVersion = "2.1.20-dev-10000+") + @PluginTargetVersions(pluginVersion = "2.1.20-dev-3305+", gradleVersion = "8.10+") fun testJvmOnly() { doTest { onlyCheckers( @@ -21,9 +22,10 @@ class KotlinMppProjectIsolationTest : AbstractKotlinMppGradleImportingTest() { } } + @Ignore("Check and unmute when KTIJ-32507 is fixed") @Test - @PluginTargetVersions(pluginVersion = "2.1.20-dev-10000+") - fun testSimpleMultiTargetProject() { + @PluginTargetVersions(gradleVersion = "8.10+") + fun testJvmOnJvmJavaAndKotlin() { doTest { onlyCheckers( NoErrorEventsDuringImportFeature, @@ -32,4 +34,49 @@ class KotlinMppProjectIsolationTest : AbstractKotlinMppGradleImportingTest() { } } + @Test + @PluginTargetVersions(pluginVersion = "2.1.20-dev-3305+", gradleVersion = "8.10+") + fun testJvmAndKapt() { + doTest { + onlyCheckers( + NoErrorEventsDuringImportFeature, + HighlightingChecker + ) + } + } + + @Ignore("Check and unmute when KTIJ-32507 is fixed") + @Test + @PluginTargetVersions(gradleVersion = "8.10+") + fun testJvmSharedResources() { + doTest { + onlyCheckers( + NoErrorEventsDuringImportFeature, + HighlightingChecker + ) + } + } + + @Test + @PluginTargetVersions(pluginVersion = "2.1.20-dev-3305+", gradleVersion = "8.10+") + fun testJvmIncludedBuild() { + doTest { + onlyCheckers( + NoErrorEventsDuringImportFeature, + HighlightingChecker + ) + } + } + + @Ignore("Unmute when the latest kotlin is updated to bootstrap version 2.2.0 and bootstrap version includes KT-74727") + @Test + @PluginTargetVersions(gradleVersion = "8.10+") + fun testSimpleMultiTargetProject() { + doTest { + onlyCheckers( + NoErrorEventsDuringImportFeature, + HighlightingChecker + ) + } + } } diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/buildSrc/build.gradle.kts b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/buildSrc/build.gradle.kts new file mode 100644 index 000000000000..89e1123ae6ba --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/buildSrc/build.gradle.kts @@ -0,0 +1,11 @@ +plugins { + `kotlin-dsl` +} + +repositories { + {{kts_kotlin_plugin_repositories}} +} + +dependencies { + implementation(libs.kotlinGradlePlugin) +} \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/buildSrc/settings.gradle.kts b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/buildSrc/settings.gradle.kts new file mode 100644 index 000000000000..3b3d805c5e97 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/buildSrc/settings.gradle.kts @@ -0,0 +1,18 @@ +pluginManagement { + repositories { + {{kts_kotlin_plugin_repositories}} + } +} +dependencyResolutionManagement { + repositories { + {{kts_kotlin_plugin_repositories}} + } + + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + } +} + +rootProject.name = "buildSrc" \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/buildSrc/src/main/kotlin/kotlin-jvm.gradle.kts b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/buildSrc/src/main/kotlin/kotlin-jvm.gradle.kts new file mode 100644 index 000000000000..d7aa5456e265 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/buildSrc/src/main/kotlin/kotlin-jvm.gradle.kts @@ -0,0 +1,20 @@ +package buildsrc.convention +import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension + +plugins { + kotlin("jvm") +} + +extensions.configure { + sourceSets.configureEach { + languageSettings.optIn("kotlin.RequiresOptIn") + } + compilerOptions { + freeCompilerArgs.add("-Xcontext-receivers") + suppressWarnings.set(true) + } +} + +tasks.withType().configureEach { + useJUnitPlatform() +} \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/buildSrc/src/main/kotlin/kotlin-kapt.gradle.kts b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/buildSrc/src/main/kotlin/kotlin-kapt.gradle.kts new file mode 100644 index 000000000000..dcd4d16defc1 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/buildSrc/src/main/kotlin/kotlin-kapt.gradle.kts @@ -0,0 +1,10 @@ +package buildsrc.convention + +plugins { + id("buildsrc.convention.kotlin-jvm") + kotlin("kapt") +} + +tasks.withType().configureEach { + useJUnitPlatform() +} diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/gradle.properties b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/gradle.properties new file mode 100644 index 000000000000..51bd639e24f9 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.unsafe.isolated-projects=true +kapt.verbose=true + diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/gradle/libs.versions.toml b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/gradle/libs.versions.toml new file mode 100644 index 000000000000..db52c1b6c16b --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/gradle/libs.versions.toml @@ -0,0 +1,10 @@ +[versions] +kotlin = "{{kgp_version}}" +dagger = "2.55" +junit = "5.11.4" + +[libraries] +kotlinGradlePlugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } +dagger = { group = "com.google.dagger", name = "dagger", version.ref = "dagger" } +dagger-compiler = { group = "com.google.dagger", name = "dagger-compiler", version.ref = "dagger" } +junit = { group = "org.junit.jupiter", name = "junit-jupiter", version.ref = "junit" } \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/module1/build.gradle.kts b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/module1/build.gradle.kts new file mode 100644 index 000000000000..de1b3bbc3f8d --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/module1/build.gradle.kts @@ -0,0 +1,9 @@ +plugins { + id("buildsrc.convention.kotlin-kapt") +} + +dependencies { + implementation(libs.dagger) + kapt(libs.dagger.compiler) + testImplementation(libs.junit) +} diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/module1/src/main/kotlin/AppComponent.kt b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/module1/src/main/kotlin/AppComponent.kt new file mode 100644 index 000000000000..9ae347bd976a --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/module1/src/main/kotlin/AppComponent.kt @@ -0,0 +1,6 @@ +import dagger.Component + +@Component +interface AppComponent { + fun getModule1(): Module1 +} diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/module1/src/main/kotlin/Dependency.kt b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/module1/src/main/kotlin/Dependency.kt new file mode 100644 index 000000000000..d93f949e7a2e --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/module1/src/main/kotlin/Dependency.kt @@ -0,0 +1,5 @@ +import javax.inject.Inject + +class Dependency @Inject constructor() { + fun provideInfo(): String = "I'm a dependency!" +} diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/module1/src/main/kotlin/Module1.kt b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/module1/src/main/kotlin/Module1.kt new file mode 100644 index 000000000000..322a12f947c6 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/module1/src/main/kotlin/Module1.kt @@ -0,0 +1,5 @@ +import javax.inject.Inject + +class Module1 @Inject constructor(private val dependency: Dependency) { + fun greet(): String = "Hello from Module1 and ${dependency.provideInfo()}" +} diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/module1/src/test/kotlin/Module1Test.kt b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/module1/src/test/kotlin/Module1Test.kt new file mode 100644 index 000000000000..447184c46c6b --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/module1/src/test/kotlin/Module1Test.kt @@ -0,0 +1,14 @@ +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Test + +class Module1Test { + + @Test + fun `test Module1 greet`() { + val dependency = Dependency() + val module1 = Module1(dependency) + + val expected = "Hello from Module1 and I'm a dependency!" + assertEquals(expected, module1.greet()) + } +} diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/module2/build.gradle.kts b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/module2/build.gradle.kts new file mode 100644 index 000000000000..ee24a9a782b1 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/module2/build.gradle.kts @@ -0,0 +1,7 @@ +plugins { + id("buildsrc.convention.kotlin-jvm") +} + +dependencies { + testImplementation(libs.junit) +} diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/module2/src/main/kotlin/Module2.kt b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/module2/src/main/kotlin/Module2.kt new file mode 100644 index 000000000000..474ea653611f --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/module2/src/main/kotlin/Module2.kt @@ -0,0 +1,3 @@ +class Module2 { + fun calculate(a: Int, b: Int): Int = a + b +} diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/module2/src/test/kotlin/Module2Test.kt b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/module2/src/test/kotlin/Module2Test.kt new file mode 100644 index 000000000000..2cab5bb0a23a --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/module2/src/test/kotlin/Module2Test.kt @@ -0,0 +1,10 @@ +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Test + +class Module2Test { + @Test + fun `test calculate`() { + val module2 = Module2() + assertEquals(5, module2.calculate(2, 3)) + } +} diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/settings.gradle.kts b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/settings.gradle.kts new file mode 100644 index 000000000000..94bb776041d9 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmAndKapt/settings.gradle.kts @@ -0,0 +1,19 @@ +pluginManagement { + repositories { + {{kts_kotlin_plugin_repositories}} + } +} + + +@Suppress("UnstableApiUsage") +dependencyResolutionManagement { + repositories { + {{kts_kotlin_plugin_repositories}} + } +} + + +rootProject.name = "jvmAndKapt" + +include("module1") +include("module2") diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmIncludedBuild/gradle.properties b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmIncludedBuild/gradle.properties new file mode 100644 index 000000000000..b9d5b85fee20 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmIncludedBuild/gradle.properties @@ -0,0 +1 @@ +org.gradle.unsafe.isolated-projects=true diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmIncludedBuild/gradle/libs.versions.toml b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmIncludedBuild/gradle/libs.versions.toml new file mode 100644 index 000000000000..812cc2781820 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmIncludedBuild/gradle/libs.versions.toml @@ -0,0 +1,5 @@ +[versions] +kotlin = "{{kgp_version}}" + +[plugins] +kotlinJvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmIncludedBuild/my-app/build.gradle.kts b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmIncludedBuild/my-app/build.gradle.kts new file mode 100644 index 000000000000..5d008c7a32ee --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmIncludedBuild/my-app/build.gradle.kts @@ -0,0 +1,8 @@ +plugins { + alias(libs.plugins.kotlinJvm) + id("org.example.my-plugin") +} + +group = "org.example.my-app" +version = "1.0" + diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmIncludedBuild/my-app/src/main/kotlin/org/example/myapp/Main.kt b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmIncludedBuild/my-app/src/main/kotlin/org/example/myapp/Main.kt new file mode 100644 index 000000000000..f4e862b884b9 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmIncludedBuild/my-app/src/main/kotlin/org/example/myapp/Main.kt @@ -0,0 +1,5 @@ +package org.example.myapp + +fun main() { + println("Hello from my app!") +} diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmIncludedBuild/my-plugin/build.gradle.kts b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmIncludedBuild/my-plugin/build.gradle.kts new file mode 100644 index 000000000000..e802243ac270 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmIncludedBuild/my-plugin/build.gradle.kts @@ -0,0 +1,19 @@ +plugins { + alias(libs.plugins.kotlinJvm) + `java-gradle-plugin` + `kotlin-dsl` +} + +group = "org.example.my-plugin" +version = "1.0" + +gradlePlugin { + plugins { + create("myPlugin") { + id = "org.example.my-plugin" + implementationClass = "org.example.myplugin.MyPlugin" + } + } +} + + diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmIncludedBuild/my-plugin/settings.gradle.kts b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmIncludedBuild/my-plugin/settings.gradle.kts new file mode 100644 index 000000000000..5a88be1ab9e1 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmIncludedBuild/my-plugin/settings.gradle.kts @@ -0,0 +1,15 @@ +pluginManagement { + repositories { + {{kts_kotlin_plugin_repositories}} + } +} +dependencyResolutionManagement { + repositories { + {{kts_kotlin_plugin_repositories}} + } + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + } +} diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmIncludedBuild/my-plugin/src/main/kotlin/org/example/myplugin/MyPlugin.kt b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmIncludedBuild/my-plugin/src/main/kotlin/org/example/myplugin/MyPlugin.kt new file mode 100644 index 000000000000..2d723e931d61 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmIncludedBuild/my-plugin/src/main/kotlin/org/example/myplugin/MyPlugin.kt @@ -0,0 +1,18 @@ +package org.example.myplugin + +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.register + +class MyPlugin : Plugin { + override fun apply(project: Project) { + project.tasks.register("helloFromPlugin") { + group = "MyPluginTasks" + description = "Example task from custom plugin" + doLast { + println("Hello from MyPlugin!") + } + } + } +} + diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmIncludedBuild/settings.gradle.kts b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmIncludedBuild/settings.gradle.kts new file mode 100644 index 000000000000..d0357055a942 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmIncludedBuild/settings.gradle.kts @@ -0,0 +1,18 @@ +pluginManagement { + repositories { + {{kts_kotlin_plugin_repositories}} + } +} + + +dependencyResolutionManagement { + repositories { + {{kts_kotlin_plugin_repositories}} + } +} + +rootProject.name = "jvmIncludedBuild" + +include(":my-app") + +includeBuild("my-plugin") diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmOnJvmJavaAndKotlin/app/build.gradle.kts b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmOnJvmJavaAndKotlin/app/build.gradle.kts new file mode 100644 index 000000000000..e329e61065a7 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmOnJvmJavaAndKotlin/app/build.gradle.kts @@ -0,0 +1,7 @@ +plugins { + kotlin("jvm") +} + +dependencies { + implementation(project(":utils")) +} diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmOnJvmJavaAndKotlin/app/src/main/kotlin/Main.kt b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmOnJvmJavaAndKotlin/app/src/main/kotlin/Main.kt new file mode 100644 index 000000000000..f7e18744ae4c --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmOnJvmJavaAndKotlin/app/src/main/kotlin/Main.kt @@ -0,0 +1,8 @@ +package com.example.app + +import com.example.utils.DateUtils + +fun main() { + val currentDate = DateUtils.getCurrentDate() + println("Today's date is: $currentDate") +} diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmOnJvmJavaAndKotlin/gradle.properties b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmOnJvmJavaAndKotlin/gradle.properties new file mode 100644 index 000000000000..efaed9b1bfb0 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmOnJvmJavaAndKotlin/gradle.properties @@ -0,0 +1,2 @@ +org.gradle.unsafe.isolated-projects=true +kotlin.code.style=official \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmOnJvmJavaAndKotlin/settings.gradle.kts b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmOnJvmJavaAndKotlin/settings.gradle.kts new file mode 100644 index 000000000000..58116aebb89b --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmOnJvmJavaAndKotlin/settings.gradle.kts @@ -0,0 +1,19 @@ +pluginManagement { + repositories { + {{kts_kotlin_plugin_repositories}} + } + + plugins { + val kotlinVersion = "{{kgp_version}}" + kotlin("jvm") version kotlinVersion + } +} + +rootProject.name = "jvmOnJvmJavaAndKotlin" +include("app", "utils") + +gradle.lifecycle.beforeProject { + repositories { + {{kts_kotlin_plugin_repositories}} + } +} diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmOnJvmJavaAndKotlin/utils/build.gradle.kts b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmOnJvmJavaAndKotlin/utils/build.gradle.kts new file mode 100644 index 000000000000..444baaa3c8c2 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmOnJvmJavaAndKotlin/utils/build.gradle.kts @@ -0,0 +1,3 @@ +plugins { + kotlin("jvm") +} diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmOnJvmJavaAndKotlin/utils/src/main/java/DateUtils.java b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmOnJvmJavaAndKotlin/utils/src/main/java/DateUtils.java new file mode 100644 index 000000000000..88a393c34f23 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmOnJvmJavaAndKotlin/utils/src/main/java/DateUtils.java @@ -0,0 +1,9 @@ +package com.example.utils; + +import java.time.LocalDate; + +public class DateUtils { + public static String getCurrentDate() { + return LocalDate.now().toString(); + } +} diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/app/build.gradle.kts b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/app/build.gradle.kts new file mode 100644 index 000000000000..cc0bddc0d4c5 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/app/build.gradle.kts @@ -0,0 +1,19 @@ +plugins { + alias(libs.plugins.kotlinJvm) + application +} + +dependencies { + implementation(project(":service")) +} + +application { + mainClass.set("com.example.AppMain") +} + +tasks.named("build") { + dependsOn(":common:build") + doLast { + println("App build depends on common build.") + } +} diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/app/src/main/kotlin/com/example/AppMain.kt b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/app/src/main/kotlin/com/example/AppMain.kt new file mode 100644 index 000000000000..a8cdb463ceca --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/app/src/main/kotlin/com/example/AppMain.kt @@ -0,0 +1,6 @@ +package com.example + +fun startApp() { + println("Starting App...") + serviceFunction() +} diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/common/build.gradle.kts b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/common/build.gradle.kts new file mode 100644 index 000000000000..9fa64e4d0ab6 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/common/build.gradle.kts @@ -0,0 +1,37 @@ +plugins { + alias(libs.plugins.kotlinJvm) +} + +tasks.register("prepareResources") { + val outputDir = layout.buildDirectory.dir("shared-resources") + outputs.dir(outputDir) + + val parentProjectName = rootProject.name + val currentProjectName = project.name + val currentProjectVersion = "1.0.0" + + doLast { + println("Preparing shared resources in the 'common' module...") + + val jsonConfig = """ + { + "parentProject": "$parentProjectName", + "currentProject": { + "name": "$currentProjectName", + "version": "$currentProjectVersion", + "description": "shared resources" + } + } + """.trimIndent() + + val configFile = outputDir.get().asFile.resolve("config.json") + configFile.parentFile.mkdirs() + configFile.writeText(jsonConfig) + + println("Shared resources prepared at: ${configFile.absolutePath}") + } +} + + + + diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/common/src/main/kotlin/com/example/Utils.kt b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/common/src/main/kotlin/com/example/Utils.kt new file mode 100644 index 000000000000..cb1ff6e26c87 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/common/src/main/kotlin/com/example/Utils.kt @@ -0,0 +1,7 @@ +package com.example + +object Utils { + fun sayHello(name: String): String { + return "Hello, $name!" + } +} \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/gradle.properties b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/gradle.properties new file mode 100644 index 000000000000..5282c9fe8cd6 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/gradle.properties @@ -0,0 +1 @@ +org.gradle.unsafe.isolated-projects=true \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/gradle/libs.versions.toml b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/gradle/libs.versions.toml new file mode 100644 index 000000000000..812cc2781820 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/gradle/libs.versions.toml @@ -0,0 +1,5 @@ +[versions] +kotlin = "{{kgp_version}}" + +[plugins] +kotlinJvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/service/build.gradle.kts b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/service/build.gradle.kts new file mode 100644 index 000000000000..4483260c0d25 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/service/build.gradle.kts @@ -0,0 +1,16 @@ +plugins { + alias(libs.plugins.kotlinJvm) +} + +dependencies { + api(project(":common")) +} + +tasks.named("build") { + dependsOn(":common:prepareResources") + + doLast { + println("Building 'service' module...") + } +} + diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/service/src/main/kotlin/com/example/ServiceApp.kt b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/service/src/main/kotlin/com/example/ServiceApp.kt new file mode 100644 index 000000000000..e907c6d7e67d --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/service/src/main/kotlin/com/example/ServiceApp.kt @@ -0,0 +1,5 @@ +package com.example + +fun serviceFunction() { + println(Utils.sayHello("Service")) +} diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/settings.gradle.kts b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/settings.gradle.kts new file mode 100644 index 000000000000..65cc5a769413 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/jvmSharedResources/settings.gradle.kts @@ -0,0 +1,16 @@ +pluginManagement { + repositories { + {{kts_kotlin_plugin_repositories}} + } +} + +dependencyResolutionManagement { + repositories { + {{kts_kotlin_plugin_repositories}} + } +} + + +rootProject.name = "jvmSharedResources" + +include(":common", ":service", ":app") diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/simpleMultiTargetProject/app/build.gradle.kts b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/simpleMultiTargetProject/app/build.gradle.kts index 0135096ec86b..1308c91905b2 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/simpleMultiTargetProject/app/build.gradle.kts +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/simpleMultiTargetProject/app/build.gradle.kts @@ -3,9 +3,7 @@ plugins { } kotlin { - jvm() { - withJava() - } + jvm() macosArm64() sourceSets.nativeMain.dependencies { diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/simpleMultiTargetProject/lib/build.gradle.kts b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/simpleMultiTargetProject/lib/build.gradle.kts index d5c1eb3a368a..a63eb320833b 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/simpleMultiTargetProject/lib/build.gradle.kts +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/projectIsolation/simpleMultiTargetProject/lib/build.gradle.kts @@ -3,9 +3,7 @@ plugins { } kotlin { - jvm() { - withJava() - } + jvm() macosArm64() macosX64() }