diff --git a/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/MultiplatformProjectImportingTest.kt b/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/MultiplatformProjectImportingTest.kt index 07b2d815838..65753e16f56 100644 --- a/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/MultiplatformProjectImportingTest.kt +++ b/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/MultiplatformProjectImportingTest.kt @@ -32,6 +32,8 @@ import org.jetbrains.plugins.gradle.tooling.annotation.TargetVersions import org.junit.Test class MultiplatformProjectImportingTest : GradleImportingTestCase() { + + private fun legacyMode() = gradleVersion.split(".")[0].toInt() < 4 private fun getDependencyLibraryUrls(moduleName: String) = getRootManager(moduleName) .orderEntries @@ -141,10 +143,8 @@ class MultiplatformProjectImportingTest : GradleImportingTestCase() { assertModuleModuleDepScope("jvm-app_test", "common-lib2_test", DependencyScope.COMPILE) } - @TargetVersions("3.5") @Test fun testTransitiveImplement() { - // TODO fix for 4.9 configureByFiles() val isResolveModulePerSourceSet = getCurrentExternalProjectSettings().isResolveModulePerSourceSet @@ -179,17 +179,20 @@ class MultiplatformProjectImportingTest : GradleImportingTestCase() { importProject() assertModuleModuleDepScope("project2", "project1", DependencyScope.COMPILE) - assertModuleModuleDepScope("project3", "project2", DependencyScope.TEST, DependencyScope.PROVIDED, DependencyScope.RUNTIME) + if (legacyMode()) { + // This data is obtained from Gradle model. Actually RUNTIME+TEST+PROVIDED == COMPILE, thus this difference does not matter for user + assertModuleModuleDepScope("project3", "project2", DependencyScope.RUNTIME, DependencyScope.TEST, DependencyScope.PROVIDED) + } else { + assertModuleModuleDepScope("project3", "project2", DependencyScope.COMPILE) + } assertModuleModuleDepScope("project3", "project1", DependencyScope.COMPILE) } finally { currentExternalProjectSettings.isResolveModulePerSourceSet = isResolveModulePerSourceSet } } - @TargetVersions("3.5") @Test fun testTransitiveImplementWithNonDefaultConfig() { - // TODO fix for 4.9 configureByFiles() val isResolveModulePerSourceSet = getCurrentExternalProjectSettings().isResolveModulePerSourceSet @@ -215,7 +218,12 @@ class MultiplatformProjectImportingTest : GradleImportingTestCase() { * due to IDEA importer limitations */ assertModuleModuleDepScope("project2", "project1", DependencyScope.COMPILE) - assertModuleModuleDepScope("project3", "project2", DependencyScope.TEST, DependencyScope.PROVIDED, DependencyScope.RUNTIME) + if (legacyMode()) { + assertModuleModuleDepScope("project3", "project2", DependencyScope.TEST, DependencyScope.PROVIDED, DependencyScope.RUNTIME) + } else { + assertModuleModuleDepScope("project3", "project2", DependencyScope.COMPILE) + } + assertModuleModuleDepScope("project3", "project1", DependencyScope.COMPILE) TestCase.assertEquals( @@ -285,7 +293,7 @@ class MultiplatformProjectImportingTest : GradleImportingTestCase() { } } - @TargetVersions("3.5") + //@TargetVersions("3.5") @Test fun testJsTestOutputFile() { // TODO fix for 4.9 @@ -294,36 +302,32 @@ class MultiplatformProjectImportingTest : GradleImportingTestCase() { importProject() TestCase.assertEquals( - projectPath + "/project2/build/classes/test/project2_test.js", + projectPath + "/project2/build/classes/${if (legacyMode()) "" else "kotlin/"}test/project2_test.js", PathUtil.toSystemIndependentName(KotlinFacet.get(getModule("project2_main"))!!.configuration.settings.testOutputPath) ) TestCase.assertEquals( - projectPath + "/project2/build/classes/test/project2_test.js", + projectPath + "/project2/build/classes/${if (legacyMode()) "" else "kotlin/"}test/project2_test.js", PathUtil.toSystemIndependentName(KotlinFacet.get(getModule("project2_test"))!!.configuration.settings.testOutputPath) ) } - @TargetVersions("3.5") @Test fun testJsProductionOutputFile() { - // TODO fix for 4.9 configureByFiles() importProject() TestCase.assertEquals( - projectPath + "/project2/build/classes/main/project2.js", + projectPath + "/project2/build/classes/${if (legacyMode()) "" else "kotlin/"}main/project2.js", PathUtil.toSystemIndependentName(KotlinFacet.get(getModule("project2_main"))!!.configuration.settings.productionOutputPath) ) TestCase.assertEquals( - projectPath + "/project2/build/classes/main/project2.js", + projectPath + "/project2/build/classes/${if (legacyMode()) "" else "kotlin/"}main/project2.js", PathUtil.toSystemIndependentName(KotlinFacet.get(getModule("project2_test"))!!.configuration.settings.productionOutputPath) ) } - @TargetVersions("3.5") @Test fun testJsTestOutputFileInProjectWithAndroid() { - // TODO fix for 4.9 configureByFiles() createProjectSubFile( "local.properties", """ @@ -334,7 +338,7 @@ class MultiplatformProjectImportingTest : GradleImportingTestCase() { importProject() TestCase.assertEquals( - projectPath + "/project2/build/classes/test/project2_test.js", + projectPath + "/project2/build/classes/${if (legacyMode()) "" else "kotlin/"}test/project2_test.js", PathUtil.toSystemIndependentName(KotlinFacet.get(getModule("project2"))!!.configuration.settings.testOutputPath) ) } diff --git a/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/MultiplatformProjectImportingTest.kt.as32 b/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/MultiplatformProjectImportingTest.kt.as32 index 45e29dcba3f..e1c23f60e6e 100644 --- a/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/MultiplatformProjectImportingTest.kt.as32 +++ b/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/MultiplatformProjectImportingTest.kt.as32 @@ -30,6 +30,8 @@ import org.jetbrains.kotlin.test.KotlinTestUtils import org.junit.Test class MultiplatformProjectImportingTest : GradleImportingTestCase() { + + private fun legacyMode() = gradleVersion.split(".")[0].toInt() < 4 private fun getDependencyLibraryUrls(moduleName: String) = getRootManager(moduleName) .orderEntries @@ -96,19 +98,37 @@ class MultiplatformProjectImportingTest : GradleImportingTestCase() { assertModuleModuleDepScope("jvm-app", "common-app", DependencyScope.COMPILE) assertModuleModuleDepScope("jvm-app", "common-lib", DependencyScope.COMPILE) - assertModuleModuleDepScope( - "jvm-app", - "jvm-lib", - DependencyScope.COMPILE, DependencyScope.RUNTIME, DependencyScope.PROVIDED, DependencyScope.TEST - ) + if (legacyMode()) { + assertModuleModuleDepScope( + "jvm-app", + "jvm-lib", + DependencyScope.COMPILE, DependencyScope.RUNTIME, DependencyScope.PROVIDED, DependencyScope.TEST + ) + } else { + assertModuleModuleDepScope( + "jvm-app", + "jvm-lib", + DependencyScope.COMPILE + ) + } + assertModuleModuleDepScope("js-app", "common-app", DependencyScope.COMPILE) assertModuleModuleDepScope("js-app", "common-lib", DependencyScope.COMPILE) - assertModuleModuleDepScope( - "js-app", - "js-lib", - DependencyScope.COMPILE, DependencyScope.RUNTIME, DependencyScope.PROVIDED, DependencyScope.TEST - ) + if (legacyMode()) { + assertModuleModuleDepScope( + "js-app", + "js-lib", + DependencyScope.COMPILE, DependencyScope.RUNTIME, DependencyScope.PROVIDED, DependencyScope.TEST + ) + } else { + assertModuleModuleDepScope( + "js-app", + "js-lib", + DependencyScope.COMPILE + ) + } + } @Test @@ -116,16 +136,34 @@ class MultiplatformProjectImportingTest : GradleImportingTestCase() { configureByFiles() importProject() - assertModuleModuleDepScope( - "jvm-app", - "jvm-lib2", - DependencyScope.COMPILE, DependencyScope.RUNTIME, DependencyScope.PROVIDED, DependencyScope.TEST - ) - assertModuleModuleDepScope( - "jvm-app", - "jvm-lib1", - DependencyScope.COMPILE, DependencyScope.RUNTIME, DependencyScope.PROVIDED, DependencyScope.TEST - ) + if (legacyMode()) { + assertModuleModuleDepScope( + "jvm-app", + "jvm-lib2", + DependencyScope.COMPILE, DependencyScope.RUNTIME, DependencyScope.PROVIDED, DependencyScope.TEST + ) + } else { + assertModuleModuleDepScope( + "jvm-app", + "jvm-lib2", + DependencyScope.COMPILE + ) + } + + if (legacyMode()) { + assertModuleModuleDepScope( + "jvm-app", + "jvm-lib1", + DependencyScope.COMPILE, DependencyScope.RUNTIME, DependencyScope.PROVIDED, DependencyScope.TEST + ) + } else { + assertModuleModuleDepScope( + "jvm-app", + "jvm-lib1", + DependencyScope.COMPILE + ) + } + assertModuleModuleDepScope("jvm-app","common-lib1", DependencyScope.COMPILE) assertModuleModuleDepScope("jvm-app", "common-lib2",DependencyScope.COMPILE) } @@ -142,22 +180,40 @@ class MultiplatformProjectImportingTest : GradleImportingTestCase() { assertModuleModuleDepScope("project2", "project1", DependencyScope.COMPILE) - assertModuleModuleDepScope( - "project3", - "project2", - DependencyScope.COMPILE, DependencyScope.RUNTIME, DependencyScope.PROVIDED, DependencyScope.TEST - ) + if (legacyMode()) { + assertModuleModuleDepScope( + "project3", + "project2", + DependencyScope.COMPILE, DependencyScope.RUNTIME, DependencyScope.PROVIDED, DependencyScope.TEST + ) + } else { + assertModuleModuleDepScope( + "project3", + "project2", + DependencyScope.COMPILE + ) + } + assertModuleModuleDepScope("project3", "project1", DependencyScope.COMPILE) currentExternalProjectSettings.isResolveModulePerSourceSet = false importProject() assertModuleModuleDepScope("project2", "project1", DependencyScope.COMPILE) - assertModuleModuleDepScope( - "project3", - "project2", - DependencyScope.COMPILE, DependencyScope.RUNTIME, DependencyScope.PROVIDED, DependencyScope.TEST - ) + if (legacyMode()) { + assertModuleModuleDepScope( + "project3", + "project2", + DependencyScope.COMPILE, DependencyScope.RUNTIME, DependencyScope.PROVIDED, DependencyScope.TEST + ) + } else { + assertModuleModuleDepScope( + "project3", + "project2", + DependencyScope.COMPILE + ) + } + assertModuleModuleDepScope("project3", "project1", DependencyScope.COMPILE) } finally { currentExternalProjectSettings.isResolveModulePerSourceSet = isResolveModulePerSourceSet @@ -272,7 +328,7 @@ class MultiplatformProjectImportingTest : GradleImportingTestCase() { importProject() TestCase.assertEquals( - projectPath + "/project2/build/classes/test/project2_test.js", + projectPath + "/project2/build/classes/${if (legacyMode()) "" else "kotlin/"}test/project2_test.js", PathUtil.toSystemIndependentName(KotlinFacet.get(getModule("project2"))!!.configuration.settings.testOutputPath) ) } @@ -283,7 +339,7 @@ class MultiplatformProjectImportingTest : GradleImportingTestCase() { importProject() TestCase.assertEquals( - projectPath + "/project2/build/classes/main/project2.js", + projectPath + "/project2/build/classes/${if (legacyMode()) "" else "kotlin/"}main/project2.js", PathUtil.toSystemIndependentName(KotlinFacet.get(getModule("project2"))!!.configuration.settings.productionOutputPath) ) } @@ -300,7 +356,7 @@ class MultiplatformProjectImportingTest : GradleImportingTestCase() { importProject() TestCase.assertEquals( - projectPath + "/project2/build/classes/test/project2_test.js", + projectPath + "/project2/build/classes/${if (legacyMode()) "" else "kotlin/"}test/project2_test.js", PathUtil.toSystemIndependentName(KotlinFacet.get(getModule("project2"))!!.configuration.settings.testOutputPath) ) }