From 0f6bf80c0af78f8cc695f56fdefbfc13b0b993e8 Mon Sep 17 00:00:00 2001 From: Michael Bogdanov Date: Tue, 8 Sep 2015 16:17:29 +0300 Subject: [PATCH] Fix kotlin module name for gradle plugin --- .../kotlin/gradle/plugin/KotlinPlugin.kt | 2 +- .../gradle/BasicKotlinGradlePluginIT.kt | 14 +++++++ .../kotlin/gradle/KotlinAndroidGradleIT.kt | 16 ++++++++ .../testProject/moduleNameCustom/build.gradle | 38 +++++++++++++++++++ .../src/main/kotlin/helloWorld.kt | 9 +++++ .../moduleNameCustom/src/test/kotlin/tests.kt | 11 ++++++ .../moduleNameDefault/build.gradle | 33 ++++++++++++++++ .../src/main/kotlin/helloWorld.kt | 10 +++++ .../src/test/kotlin/tests.kt | 11 ++++++ 9 files changed, 143 insertions(+), 1 deletion(-) create mode 100644 libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/moduleNameCustom/build.gradle create mode 100644 libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/moduleNameCustom/src/main/kotlin/helloWorld.kt create mode 100644 libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/moduleNameCustom/src/test/kotlin/tests.kt create mode 100644 libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/moduleNameDefault/build.gradle create mode 100644 libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/moduleNameDefault/src/main/kotlin/helloWorld.kt create mode 100644 libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/moduleNameDefault/src/test/kotlin/tests.kt diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt index 7c444766df3..fa7f8c47c82 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt @@ -97,7 +97,7 @@ abstract class KotlinSourceSetProcessor( val name = sourceSet.getCompileTaskName(compileTaskNameSuffix) + suffix logger.kotlinDebug("Creating kotlin compile task $name with class $compilerClass") val compile = project.getTasks().create(name, compilerClass) - compile.extensions.extraProperties.set("defaultModuleName", name) + compile.extensions.extraProperties.set("defaultModuleName", "${project.name}-$name") return compile } diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/BasicKotlinGradlePluginIT.kt b/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/BasicKotlinGradlePluginIT.kt index f4eba9f4a71..fdb9c2d5a1f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/BasicKotlinGradlePluginIT.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/BasicKotlinGradlePluginIT.kt @@ -60,6 +60,20 @@ class SimpleKotlinGradleIT : BaseGradleIT() { } } + Test fun testKotlinCustomModuleName() { + Project("moduleNameCustom", "1.6").build("build") { + assertSuccessful() + assertContains("args.moduleName = myTestName") + } + } + + Test fun testKotlinDefaultModuleName() { + Project("moduleNameDefault", "1.6").build("build") { + assertSuccessful() + assertContains("args.moduleName = moduleNameDefault-compileKotlin") + } + } + Test fun testAdvancedOptions() { Project("advancedOptions", "1.6").build("build") { assertSuccessful() diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinAndroidGradleIT.kt b/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinAndroidGradleIT.kt index 8967095ee05..68e09442e5a 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinAndroidGradleIT.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinAndroidGradleIT.kt @@ -52,4 +52,20 @@ class KotlinAndroidGradleIT: BaseGradleIT() { ":compileFlavor2Release") } } + + Test fun testModuleNameAndroid() { + val project = Project("AndroidProject", "2.3") + + project.build("build") { + assertContains( + "args.moduleName = Lib-compileReleaseKotlin", + "args.moduleName = Lib-compileDebugKotlin", + "args.moduleName = Android-compileFlavor1DebugKotlin", + "args.moduleName = Android-compileFlavor2DebugKotlin", + "args.moduleName = Android-compileFlavor1JnidebugKotlin", + "args.moduleName = Android-compileFlavor2JnidebugKotlin", + "args.moduleName = Android-compileFlavor1ReleaseKotlin", + "args.moduleName = Android-compileFlavor2ReleaseKotlin") + } + } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/moduleNameCustom/build.gradle b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/moduleNameCustom/build.gradle new file mode 100644 index 00000000000..c27eb099dea --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/moduleNameCustom/build.gradle @@ -0,0 +1,38 @@ +buildscript { + repositories { + mavenCentral() + maven { + url 'file://' + pathToKotlinPlugin + } + } + dependencies { + classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:0.1-SNAPSHOT' + } +} + +apply plugin: "kotlin" + +repositories { + maven { + url 'file://' + pathToKotlinPlugin + } + mavenCentral() +} + +dependencies { + testCompile 'org.testng:testng:6.8' + compile 'org.jetbrains.kotlin:kotlin-stdlib:0.1-SNAPSHOT' +} + +test { + useTestNG() +} + +compileKotlin { + kotlinOptions.moduleName = "myTestName" +} + + +task wrapper(type: Wrapper) { + gradleVersion="1.4" +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/moduleNameCustom/src/main/kotlin/helloWorld.kt b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/moduleNameCustom/src/main/kotlin/helloWorld.kt new file mode 100644 index 00000000000..57e8766d6ea --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/moduleNameCustom/src/main/kotlin/helloWorld.kt @@ -0,0 +1,9 @@ +package demo + +public fun isModuleFileExists(): Boolean { + val systemClassLoader = ClassLoader.getSystemClassLoader() + val moduleFile = "META-INF/myTestName.kotlin_module" + val resourceAsStream = systemClassLoader.getResourceAsStream(moduleFile) + return resourceAsStream != null +} + diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/moduleNameCustom/src/test/kotlin/tests.kt b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/moduleNameCustom/src/test/kotlin/tests.kt new file mode 100644 index 00000000000..75a947b67c2 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/moduleNameCustom/src/test/kotlin/tests.kt @@ -0,0 +1,11 @@ +package demo + +import org.testng.Assert.assertTrue +import org.testng.annotations.Test as test + +class TestSource() { + test fun f() { + assertTrue(isModuleFileExists(), "Kotlin module file should exists") + } +} + diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/moduleNameDefault/build.gradle b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/moduleNameDefault/build.gradle new file mode 100644 index 00000000000..614aceb0239 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/moduleNameDefault/build.gradle @@ -0,0 +1,33 @@ +buildscript { + repositories { + mavenCentral() + maven { + url 'file://' + pathToKotlinPlugin + } + } + dependencies { + classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:0.1-SNAPSHOT' + } +} + +apply plugin: "kotlin" + +repositories { + maven { + url 'file://' + pathToKotlinPlugin + } + mavenCentral() +} + +dependencies { + testCompile 'org.testng:testng:6.8' + compile 'org.jetbrains.kotlin:kotlin-stdlib:0.1-SNAPSHOT' +} + +test { + useTestNG() +} + +task wrapper(type: Wrapper) { + gradleVersion="1.4" +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/moduleNameDefault/src/main/kotlin/helloWorld.kt b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/moduleNameDefault/src/main/kotlin/helloWorld.kt new file mode 100644 index 00000000000..452a1550233 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/moduleNameDefault/src/main/kotlin/helloWorld.kt @@ -0,0 +1,10 @@ +package demo + + +public fun isModuleFileExists(): Boolean { + val systemClassLoader = ClassLoader.getSystemClassLoader() + val moduleFile = "META-INF/moduleNameDefault-compileKotlin.kotlin_module" + val resourceAsStream = systemClassLoader.getResourceAsStream(moduleFile) + return resourceAsStream != null +} + diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/moduleNameDefault/src/test/kotlin/tests.kt b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/moduleNameDefault/src/test/kotlin/tests.kt new file mode 100644 index 00000000000..161441e4756 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/moduleNameDefault/src/test/kotlin/tests.kt @@ -0,0 +1,11 @@ +package demo + +import org.testng.Assert.assertTrue +import org.testng.annotations.Test as test + +class TestSource() { + test fun f() { + assertTrue(isModuleFileExists(), "Kotlin module file should exists") + } +} +