From 6d30123c21bee6ade4932bf5b4662171545164d3 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Thu, 7 Sep 2017 16:52:53 +0200 Subject: [PATCH] Add test dependencies when creating multiplatform projects --- .../GradleKotlinFrameworkSupportProvider.kt | 29 +++++++++++++------ .../KotlinWithGradleConfigurator.kt | 3 +- .../idea/versions/KotlinRuntimeLibraryUtil.kt | 3 ++ 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/GradleKotlinFrameworkSupportProvider.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/GradleKotlinFrameworkSupportProvider.kt index 8f16d6c44c1..4b13993f84d 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/GradleKotlinFrameworkSupportProvider.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/GradleKotlinFrameworkSupportProvider.kt @@ -83,11 +83,23 @@ abstract class GradleKotlinFrameworkSupportProvider(val frameworkTypeId: String, .addRepositoriesDefinition("mavenCentral()") .addBuildscriptPropertyDefinition("ext.kotlin_version = '$kotlinVersion'") - .addDependencyNotation(getRuntimeLibrary(sdk)) - .addBuildscriptDependencyNotation(KotlinWithGradleConfigurator.CLASSPATH) + + for (dependency in getDependencies(sdk)) { + buildScriptData.addDependencyNotation(KotlinWithGradleConfigurator.getGroovyDependencySnippet(dependency)) + } + for (dependency in getTestDependencies()) { + buildScriptData.addDependencyNotation( + if (":" in dependency) + "testCompile \"$dependency\"" + else + KotlinWithGradleConfigurator.getGroovyDependencySnippet(dependency, "testCompile") + ) + } + buildScriptData.addBuildscriptDependencyNotation(KotlinWithGradleConfigurator.CLASSPATH) } - protected abstract fun getRuntimeLibrary(sdk: Sdk?): String + protected abstract fun getDependencies(sdk: Sdk?): List + protected open fun getTestDependencies(): List = listOf() protected abstract fun getPluginId(): String @@ -100,8 +112,7 @@ open class GradleKotlinJavaFrameworkSupportProvider(frameworkTypeId: String = "K override fun getPluginId() = KotlinGradleModuleConfigurator.KOTLIN - override fun getRuntimeLibrary(sdk: Sdk?) = - KotlinWithGradleConfigurator.getGroovyDependencySnippet(getStdlibArtifactId(sdk, bundledRuntimeVersion())) + override fun getDependencies(sdk: Sdk?) = listOf(getStdlibArtifactId(sdk, bundledRuntimeVersion())) override fun addSupport(module: Module, rootModel: ModifiableRootModel, modifiableModelsProvider: ModifiableModelsProvider, buildScriptData: BuildScriptDataBuilder) { super.addSupport(module, rootModel, modifiableModelsProvider, buildScriptData) @@ -121,8 +132,7 @@ open class GradleKotlinJSFrameworkSupportProvider(frameworkTypeId: String = "KOT override fun getPluginId() = KotlinJsGradleModuleConfigurator.KOTLIN_JS - override fun getRuntimeLibrary(sdk: Sdk?) = - KotlinWithGradleConfigurator.getGroovyDependencySnippet(MAVEN_JS_STDLIB_ID) + override fun getDependencies(sdk: Sdk?) = listOf(MAVEN_JS_STDLIB_ID) override fun getDescription() = "A Kotlin library or application targeting JavaScript" } @@ -131,8 +141,8 @@ open class GradleKotlinMPPCommonFrameworkSupportProvider : GradleKotlinFrameworkSupportProvider("KOTLIN_MPP_COMMON", "Kotlin (Multiplatform - Common)", KotlinIcons.SMALL_LOGO) { override fun getPluginId() = "kotlin-platform-common" - override fun getRuntimeLibrary(sdk: Sdk?) = - KotlinWithGradleConfigurator.getGroovyDependencySnippet(MAVEN_COMMON_STDLIB_ID) + override fun getDependencies(sdk: Sdk?) = listOf(MAVEN_COMMON_STDLIB_ID) + override fun getTestDependencies() = listOf(MAVEN_COMMON_TEST_ID) override fun getDescription() = "Shared code for a Kotlin multiplatform project (targeting JVM and JS)" } @@ -142,6 +152,7 @@ class GradleKotlinMPPJavaFrameworkSupportProvider override fun getPluginId() = "kotlin-platform-jvm" override fun getDescription() = "JVM-specific code for a Kotlin multiplatform project" + override fun getTestDependencies() = listOf(MAVEN_TEST_ID, MAVEN_TEST_JUNIT_ID, "junit:junit:4.12") } class GradleKotlinMPPJSFrameworkSupportProvider diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinWithGradleConfigurator.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinWithGradleConfigurator.kt index 2b0460a6c49..62692e0ee4c 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinWithGradleConfigurator.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinWithGradleConfigurator.kt @@ -248,7 +248,8 @@ abstract class KotlinWithGradleConfigurator : KotlinProjectConfigurator { private val KOTLIN_BUILD_SCRIPT_NAME = "build.gradle.kts" - fun getGroovyDependencySnippet(artifactName: String) = "compile \"org.jetbrains.kotlin:$artifactName:\$kotlin_version\"" + fun getGroovyDependencySnippet(artifactName: String, scope: String = "compile") = + "$scope \"org.jetbrains.kotlin:$artifactName:\$kotlin_version\"" fun getGroovyApplyPluginDirective(pluginName: String) = "apply plugin: '$pluginName'" diff --git a/idea/src/org/jetbrains/kotlin/idea/versions/KotlinRuntimeLibraryUtil.kt b/idea/src/org/jetbrains/kotlin/idea/versions/KotlinRuntimeLibraryUtil.kt index 5395b945d05..60096d5a03e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/versions/KotlinRuntimeLibraryUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/versions/KotlinRuntimeLibraryUtil.kt @@ -364,4 +364,7 @@ val MAVEN_STDLIB_ID_JRE8 = "kotlin-stdlib-jre8" val MAVEN_JS_STDLIB_ID = "kotlin-stdlib-js" val MAVEN_OLD_JS_STDLIB_ID = "kotlin-js-library" val MAVEN_COMMON_STDLIB_ID = "kotlin-stdlib-common" // TODO: KotlinCommonMavenConfigurator +val MAVEN_TEST_ID = "kotlin-test" +val MAVEN_TEST_JUNIT_ID = "kotlin-test-junit" +val MAVEN_COMMON_TEST_ID = "kotlin-test-common" val LOG = Logger.getInstance("org.jetbrains.kotlin.idea.versions.KotlinRuntimeLibraryUtilKt") \ No newline at end of file