From 1085abedcd92e2ec7a0c805e0775551e82e150f0 Mon Sep 17 00:00:00 2001 From: Alexey Tsvetkov Date: Thu, 24 May 2018 23:51:52 +0300 Subject: [PATCH] Test scripting with Gradle --- .../build.gradle | 4 +++- .../kotlin/gradle/KotlinGradlePluginIT.kt | 10 ++++++++++ .../testProject/kotlinScripting/app/build.gradle | 5 +++++ .../app/src/main/kotlin/world.greet.kts | 6 ++++++ .../testProject/kotlinScripting/build.gradle | 16 ++++++++++++++++ .../kotlinScripting/script-template/build.gradle | 6 ++++++ .../src/main/kotlin/GreetScriptTemplate.kt | 16 ++++++++++++++++ ...org.jetbrains.kotlin.test.GreetScriptTemplate | 0 .../testProject/kotlinScripting/settings.gradle | 1 + 9 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinScripting/app/build.gradle create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinScripting/app/src/main/kotlin/world.greet.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinScripting/build.gradle create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinScripting/script-template/build.gradle create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinScripting/script-template/src/main/kotlin/GreetScriptTemplate.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinScripting/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/kotlinScripting/settings.gradle diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle index f277fffb470..3b884a513c3 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle @@ -52,7 +52,9 @@ test.dependsOn(":kotlin-allopen:install", ":kotlin-test:kotlin-test-jvm:install", ":kotlin-gradle-subplugin-example:install", ":kotlin-stdlib-jre8:install", - ":examples:annotation-processor-example:install") + ":examples:annotation-processor-example:install", + ":kotlin-scripting-common:install", + ":kotlin-scripting-jvm:install") // Validate that all dependencies 'install' tasks are added to 'test' dependencies diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt index fdadf7dc1f6..2bc5cf160d8 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt @@ -807,4 +807,14 @@ class KotlinGradleIT : BaseGradleIT() { } } + @Test + fun testScripting() { + Project("kotlinScripting").build("build") { + assertSuccessful() + assertCompiledKotlinSources( + listOf("app/src/main/kotlin/world.greet.kts", "script-template/src/main/kotlin/GreetScriptTemplate.kt") + ) + assertFileExists("${kotlinClassesDir("app", "main")}World_greet.class") + } + } } 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/kotlinScripting/app/build.gradle new file mode 100644 index 00000000000..6c8499756db --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinScripting/app/build.gradle @@ -0,0 +1,5 @@ +apply plugin: 'kotlin' + +dependencies { + compile project(':script-template') +} \ No newline at end of file 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/kotlinScripting/app/src/main/kotlin/world.greet.kts new file mode 100644 index 00000000000..4b41ac43333 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinScripting/app/src/main/kotlin/world.greet.kts @@ -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/kotlinScripting/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinScripting/build.gradle new file mode 100644 index 00000000000..506324b4f50 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinScripting/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/kotlinScripting/script-template/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinScripting/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/kotlinScripting/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/kotlinScripting/script-template/src/main/kotlin/GreetScriptTemplate.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinScripting/script-template/src/main/kotlin/GreetScriptTemplate.kt new file mode 100644 index 00000000000..c347be1f5f7 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinScripting/script-template/src/main/kotlin/GreetScriptTemplate.kt @@ -0,0 +1,16 @@ +/* + * 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 +@KotlinScriptFileExtension("greet.kts") +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/kotlinScripting/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/kotlinScripting/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/kotlinScripting/settings.gradle new file mode 100644 index 00000000000..0539ba7655e --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinScripting/settings.gradle @@ -0,0 +1 @@ +include ':script-template', ':app' \ No newline at end of file