From 337ca7021da978850ed5e747215fa802ed483e1b Mon Sep 17 00:00:00 2001 From: Alexey Tsvetkov Date: Fri, 2 Nov 2018 05:38:58 +0300 Subject: [PATCH] Add test for IC of non-kts scripts in Gradle --- .../jetbrains/kotlin/gradle/SubpluginsIT.kt | 30 ++++++++++++++++++- .../app/build.gradle | 0 .../app/src/main/kotlin/world.greet.kts | 0 .../build.gradle | 0 .../script-template/build.gradle | 0 .../src/main/kotlin/GreetScriptTemplate.kt | 0 ....jetbrains.kotlin.test.GreetScriptTemplate | 0 .../settings.gradle | 0 .../scriptingCustomExtension/app/build.gradle | 6 ++++ .../app/src/main/kotlin/alice.greet | 6 ++++ .../app/src/main/kotlin/bob.greet | 6 ++++ .../app/src/main/kotlin/world.greet | 6 ++++ .../scriptingCustomExtension/build.gradle | 16 ++++++++++ .../script-template/build.gradle | 6 ++++ .../src/main/kotlin/GreetScriptTemplate.kt | 15 ++++++++++ ....jetbrains.kotlin.test.GreetScriptTemplate | 0 .../scriptingCustomExtension/settings.gradle | 1 + 17 files changed, 91 insertions(+), 1 deletion(-) rename libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/{kotlinScripting => scripting}/app/build.gradle (100%) rename libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/{kotlinScripting => scripting}/app/src/main/kotlin/world.greet.kts (100%) rename libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/{kotlinScripting => scripting}/build.gradle (100%) rename libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/{kotlinScripting => scripting}/script-template/build.gradle (100%) rename libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/{kotlinScripting => scripting}/script-template/src/main/kotlin/GreetScriptTemplate.kt (100%) create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scripting/script-template/src/main/resources/META-INF/kotlin/script/templates/org.jetbrains.kotlin.test.GreetScriptTemplate rename libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/{kotlinScripting => scripting}/settings.gradle (100%) create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/app/build.gradle create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/app/src/main/kotlin/alice.greet create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/app/src/main/kotlin/bob.greet create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/app/src/main/kotlin/world.greet create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/build.gradle create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/script-template/build.gradle create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/script-template/src/main/kotlin/GreetScriptTemplate.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/script-template/src/main/resources/META-INF/kotlin/script/templates/org.jetbrains.kotlin.test.GreetScriptTemplate create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/settings.gradle diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/SubpluginsIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/SubpluginsIT.kt index 3aab2f45c24..59a9e287dbf 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/SubpluginsIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/SubpluginsIT.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.gradle import org.jetbrains.kotlin.gradle.util.checkBytecodeContains +import org.jetbrains.kotlin.gradle.util.modify import org.junit.Test import java.io.File import kotlin.test.assertTrue @@ -114,7 +115,7 @@ class SubpluginsIT : BaseGradleIT() { @Test fun testScripting() { - Project("kotlinScripting").build("build") { + Project("scripting").build("build") { assertSuccessful() assertCompiledKotlinSources( listOf("app/src/main/kotlin/world.greet.kts", "script-template/src/main/kotlin/GreetScriptTemplate.kt") @@ -123,6 +124,33 @@ class SubpluginsIT : BaseGradleIT() { } } + @Test + fun testScriptingCustomExtensionIncremental() { + val project = Project("scriptingCustomExtension") + val options = defaultBuildOptions().copy(incremental = true, kotlinDaemonDebugPort = null) + + project.setupWorkingDir() + val bobGreet = project.projectFile("bob.greet") + val aliceGreet = project.projectFile("alice.greet") + val worldGreet = project.projectFile("world.greet") + val greetScriptTemplateKt = project.projectFile("GreetScriptTemplate.kt") + + project.build("build", options = options) { + assertSuccessful() + assertCompiledKotlinSources(project.relativize(bobGreet, aliceGreet, worldGreet, greetScriptTemplateKt)) + val classesDir = kotlinClassesDir("app", "main") + assertFileExists("${classesDir}World.class") + assertFileExists("${classesDir}Alice.class") + assertFileExists("${classesDir}Bob.class") + } + + bobGreet.modify { it.replace("Bob", "Uncle Bob") } + project.build("build", options = options) { + assertSuccessful() + assertCompiledKotlinSources(project.relativize(bobGreet)) + } + } + @Test fun testAllOpenFromNestedBuildscript() { Project("allOpenFromNestedBuildscript").build("build") { diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinScripting/app/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scripting/app/build.gradle similarity index 100% rename from libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinScripting/app/build.gradle rename to libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scripting/app/build.gradle diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinScripting/app/src/main/kotlin/world.greet.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scripting/app/src/main/kotlin/world.greet.kts similarity index 100% rename from libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinScripting/app/src/main/kotlin/world.greet.kts rename to libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scripting/app/src/main/kotlin/world.greet.kts diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinScripting/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scripting/build.gradle similarity index 100% rename from libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinScripting/build.gradle rename to libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scripting/build.gradle diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinScripting/script-template/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scripting/script-template/build.gradle similarity index 100% rename from libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinScripting/script-template/build.gradle rename to libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scripting/script-template/build.gradle diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinScripting/script-template/src/main/kotlin/GreetScriptTemplate.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scripting/script-template/src/main/kotlin/GreetScriptTemplate.kt similarity index 100% rename from libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinScripting/script-template/src/main/kotlin/GreetScriptTemplate.kt rename to libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scripting/script-template/src/main/kotlin/GreetScriptTemplate.kt diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scripting/script-template/src/main/resources/META-INF/kotlin/script/templates/org.jetbrains.kotlin.test.GreetScriptTemplate b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scripting/script-template/src/main/resources/META-INF/kotlin/script/templates/org.jetbrains.kotlin.test.GreetScriptTemplate new file mode 100644 index 00000000000..e69de29bb2d diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinScripting/settings.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scripting/settings.gradle similarity index 100% rename from libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinScripting/settings.gradle rename to libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scripting/settings.gradle diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/app/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/app/build.gradle new file mode 100644 index 00000000000..3db99c8b6ab --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/app/build.gradle @@ -0,0 +1,6 @@ +apply plugin: 'kotlin' + +dependencies { + compile project(':script-template') + kotlinScriptDef project(':script-template') +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/app/src/main/kotlin/alice.greet b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/app/src/main/kotlin/alice.greet new file mode 100644 index 00000000000..7fc4f6f411d --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/app/src/main/kotlin/alice.greet @@ -0,0 +1,6 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +greet("Alice") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/app/src/main/kotlin/bob.greet b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/app/src/main/kotlin/bob.greet new file mode 100644 index 00000000000..6091d2a51ed --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/app/src/main/kotlin/bob.greet @@ -0,0 +1,6 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +greet("Bob") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/app/src/main/kotlin/world.greet b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/app/src/main/kotlin/world.greet new file mode 100644 index 00000000000..4b41ac43333 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/app/src/main/kotlin/world.greet @@ -0,0 +1,6 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +greet("World") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/build.gradle new file mode 100644 index 00000000000..506324b4f50 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/build.gradle @@ -0,0 +1,16 @@ +buildscript { + repositories { + mavenLocal() + mavenCentral() + } + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +allprojects { + repositories { + mavenLocal() + mavenCentral() + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/script-template/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/script-template/build.gradle new file mode 100644 index 00000000000..a66ada1ae01 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/script-template/build.gradle @@ -0,0 +1,6 @@ +apply plugin: 'kotlin' + +dependencies { + compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + compile "org.jetbrains.kotlin:kotlin-scripting-common:$kotlin_version" +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/script-template/src/main/kotlin/GreetScriptTemplate.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/script-template/src/main/kotlin/GreetScriptTemplate.kt new file mode 100644 index 00000000000..671ee16bba8 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/script-template/src/main/kotlin/GreetScriptTemplate.kt @@ -0,0 +1,15 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.test + +import kotlin.script.experimental.annotations.* + +@KotlinScript(fileExtension = "greet") +abstract class GreetScriptTemplate { + fun greet(subject: String) { + println("Hello, $subject!") + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/script-template/src/main/resources/META-INF/kotlin/script/templates/org.jetbrains.kotlin.test.GreetScriptTemplate b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/script-template/src/main/resources/META-INF/kotlin/script/templates/org.jetbrains.kotlin.test.GreetScriptTemplate new file mode 100644 index 00000000000..e69de29bb2d diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/settings.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/settings.gradle new file mode 100644 index 00000000000..0539ba7655e --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/scriptingCustomExtension/settings.gradle @@ -0,0 +1 @@ +include ':script-template', ':app' \ No newline at end of file