From 2c516f18a07195012eb104783bba1437e2b9c44e Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Thu, 26 May 2016 15:40:36 +0300 Subject: [PATCH] Add tests on "-language-version" usage from Ant, Maven, Gradle --- .../jvm/languageVersion/build.log.expected | 17 +++++ .../ant/jvm/languageVersion/build.xml | 9 +++ .../ant/jvm/languageVersion/main.kt | 3 + .../integration/AntTaskTestGenerated.java | 6 ++ .../jetbrains/kotlin/gradle/tasks/Tasks.kt | 1 + .../gradle/BasicKotlinGradlePluginIT.kt | 8 +++ .../testProject/languageVersion/build.gradle | 40 +++++++++++ .../languageVersion/src/helloWorld.kt | 3 + .../test-languageVersion/invoker.properties | 1 + .../src/it/test-languageVersion/pom.xml | 69 +++++++++++++++++++ .../src/main/kotlin/main.kt | 3 + .../src/it/test-languageVersion/verify.bsh | 4 ++ 12 files changed, 164 insertions(+) create mode 100644 compiler/testData/integration/ant/jvm/languageVersion/build.log.expected create mode 100644 compiler/testData/integration/ant/jvm/languageVersion/build.xml create mode 100644 compiler/testData/integration/ant/jvm/languageVersion/main.kt create mode 100644 libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/languageVersion/build.gradle create mode 100644 libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/languageVersion/src/helloWorld.kt create mode 100644 libraries/tools/kotlin-maven-plugin-test/src/it/test-languageVersion/invoker.properties create mode 100644 libraries/tools/kotlin-maven-plugin-test/src/it/test-languageVersion/pom.xml create mode 100644 libraries/tools/kotlin-maven-plugin-test/src/it/test-languageVersion/src/main/kotlin/main.kt create mode 100644 libraries/tools/kotlin-maven-plugin-test/src/it/test-languageVersion/verify.bsh diff --git a/compiler/testData/integration/ant/jvm/languageVersion/build.log.expected b/compiler/testData/integration/ant/jvm/languageVersion/build.log.expected new file mode 100644 index 00000000000..5c07676d562 --- /dev/null +++ b/compiler/testData/integration/ant/jvm/languageVersion/build.log.expected @@ -0,0 +1,17 @@ +OUT: +Buildfile: [TestData]/build.xml + +build: + [kotlinc] Compiling [[TestData]/main.kt] => [[Temp]/hello.jar] + [kotlinc] [TestData]/main.kt:3:17: error: this type is sealed, so it can be inherited by only its own nested classes or objects + [kotlinc] class Derived : Base() + [kotlinc] ^ + +ERR: + +BUILD FAILED +[TestData]/build.xml:5: Compile failed; see the compiler error output for details. + +Total time: [time] + +Return code: 1 diff --git a/compiler/testData/integration/ant/jvm/languageVersion/build.xml b/compiler/testData/integration/ant/jvm/languageVersion/build.xml new file mode 100644 index 00000000000..7f8229c02e5 --- /dev/null +++ b/compiler/testData/integration/ant/jvm/languageVersion/build.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/compiler/testData/integration/ant/jvm/languageVersion/main.kt b/compiler/testData/integration/ant/jvm/languageVersion/main.kt new file mode 100644 index 00000000000..a4c2f854f25 --- /dev/null +++ b/compiler/testData/integration/ant/jvm/languageVersion/main.kt @@ -0,0 +1,3 @@ +sealed class Base + +class Derived : Base() diff --git a/compiler/tests/org/jetbrains/kotlin/integration/AntTaskTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/integration/AntTaskTestGenerated.java index f56299fe74c..e38256eb99b 100644 --- a/compiler/tests/org/jetbrains/kotlin/integration/AntTaskTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/integration/AntTaskTestGenerated.java @@ -77,6 +77,12 @@ public class AntTaskTestGenerated extends AbstractAntTaskTest { doTest(fileName); } + @TestMetadata("languageVersion") + public void testLanguageVersion() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/integration/ant/jvm/languageVersion/"); + doTest(fileName); + } + @TestMetadata("mainInFiles") public void testMainInFiles() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/integration/ant/jvm/mainInFiles/"); diff --git a/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt b/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt index 41cb816116c..420eea88f16 100644 --- a/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt +++ b/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt @@ -207,6 +207,7 @@ open class KotlinCompile() : AbstractKotlinCompile() { args.noCallAssertions = kotlinOptions.noCallAssertions args.noParamAssertions = kotlinOptions.noParamAssertions args.moduleName = kotlinOptions.moduleName ?: extraProperties.getOrNull("defaultModuleName") + args.languageVersion = kotlinOptions.languageVersion fun addFriendPathForTestTask(taskName: String) { logger.kotlinDebug("try to determine the output directory of corresponding $taskName task") 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 7aa2ebce9f5..17edd49d31e 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 @@ -92,6 +92,14 @@ class SimpleKotlinGradleIT : BaseGradleIT() { } } + @Test + fun testLanguageVersion() { + Project("languageVersion", "1.6").build("build") { + assertFailed() + assertContains("This type is sealed") + } + } + @Test fun testGradleSubplugin() { val project = Project("kotlinGradleSubplugin", "1.6") diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/languageVersion/build.gradle b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/languageVersion/build.gradle new file mode 100644 index 00000000000..146fc6e2804 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/languageVersion/build.gradle @@ -0,0 +1,40 @@ +buildscript { + repositories { + mavenCentral() + maven { + url 'file://' + pathToKotlinPlugin + } + } + dependencies { + classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.1-SNAPSHOT' + } +} + +apply plugin: "kotlin" + +sourceSets { + main { + kotlin { + srcDir 'src' + } + } +} + +repositories { + maven { + url 'file://' + pathToKotlinPlugin + } + mavenCentral() +} + +dependencies { + compile 'org.jetbrains.kotlin:kotlin-stdlib:1.1-SNAPSHOT' +} + +compileKotlin { + kotlinOptions.languageVersion = "1.0" +} + +task wrapper(type: Wrapper) { + gradleVersion = "1.4" +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/languageVersion/src/helloWorld.kt b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/languageVersion/src/helloWorld.kt new file mode 100644 index 00000000000..a4c2f854f25 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/languageVersion/src/helloWorld.kt @@ -0,0 +1,3 @@ +sealed class Base + +class Derived : Base() diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-languageVersion/invoker.properties b/libraries/tools/kotlin-maven-plugin-test/src/it/test-languageVersion/invoker.properties new file mode 100644 index 00000000000..c21e972fc6b --- /dev/null +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-languageVersion/invoker.properties @@ -0,0 +1 @@ +invoker.buildResult = failure diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-languageVersion/pom.xml b/libraries/tools/kotlin-maven-plugin-test/src/it/test-languageVersion/pom.xml new file mode 100644 index 00000000000..617b0a1f02b --- /dev/null +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-languageVersion/pom.xml @@ -0,0 +1,69 @@ + + + 4.0.0 + + org.jetbrains.kotlin + test-languageVersion + 1.0-SNAPSHOT + + + + junit + junit + 4.9 + + + org.jetbrains.kotlin + kotlin-runtime + ${kotlin.version} + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 2.3.2 + + 1.6 + 1.6 + + + + org.apache.maven.plugins + maven-source-plugin + 2.1.2 + + + + + ${project.basedir}/src/main/kotlin + + + kotlin-maven-plugin + org.jetbrains.kotlin + ${kotlin.version} + + + compile + process-sources + + compile + + + + + + -language-version + 1.0 + + + + + + + diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-languageVersion/src/main/kotlin/main.kt b/libraries/tools/kotlin-maven-plugin-test/src/it/test-languageVersion/src/main/kotlin/main.kt new file mode 100644 index 00000000000..a4c2f854f25 --- /dev/null +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-languageVersion/src/main/kotlin/main.kt @@ -0,0 +1,3 @@ +sealed class Base + +class Derived : Base() diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-languageVersion/verify.bsh b/libraries/tools/kotlin-maven-plugin-test/src/it/test-languageVersion/verify.bsh new file mode 100644 index 00000000000..d5c0ef985e5 --- /dev/null +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-languageVersion/verify.bsh @@ -0,0 +1,4 @@ +source(new File(basedir, "../../../verify-common.bsh").getAbsolutePath()); + +assertBuildLogHasLine("[INFO] BUILD FAILURE"); +assertBuildLogHasLineThatContains("This type is sealed");