Test Java is up-to-date when Kotlin ABI is unchanged
This commit is contained in:
+72
@@ -0,0 +1,72 @@
|
|||||||
|
/*
|
||||||
|
* 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.gradle
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.gradle.util.modify
|
||||||
|
import org.junit.Test
|
||||||
|
|
||||||
|
class JavaUpToDateIT : BaseGradleIT() {
|
||||||
|
@Test
|
||||||
|
fun testKotlinMethodBodyIsChanged() {
|
||||||
|
val project = Project("javaUpToDate", GradleVersionRequired.AtLeast("4.3"))
|
||||||
|
|
||||||
|
project.build("build") {
|
||||||
|
assertSuccessful()
|
||||||
|
assertTasksExecuted(":compileKotlin", ":compileJava", ":compileTestKotlin", ":compileTestJava")
|
||||||
|
}
|
||||||
|
|
||||||
|
project.projectFile("MainKotlinClass.kt").modify {
|
||||||
|
it.replace(
|
||||||
|
"fun number(): Int = 0",
|
||||||
|
"fun number(): Int = 1"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
project.build("build") {
|
||||||
|
assertSuccessful()
|
||||||
|
assertTasksExecuted(":compileKotlin", ":compileTestKotlin")
|
||||||
|
assertTasksUpToDate(":compileJava", ":compileTestJava")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testKotlinNewLineAdded() {
|
||||||
|
val project = Project("javaUpToDate", GradleVersionRequired.AtLeast("4.3"))
|
||||||
|
|
||||||
|
project.build("build") {
|
||||||
|
assertSuccessful()
|
||||||
|
assertTasksExecuted(":compileKotlin", ":compileJava", ":compileTestKotlin", ":compileTestJava")
|
||||||
|
}
|
||||||
|
|
||||||
|
project.projectFile("MainKotlinClass.kt").modify { "\n$it" }
|
||||||
|
project.build("build") {
|
||||||
|
assertSuccessful()
|
||||||
|
assertTasksExecuted(":compileKotlin", ":compileTestKotlin")
|
||||||
|
assertTasksUpToDate(":compileJava", ":compileTestJava")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testPrivateMethodSignatureChanged() {
|
||||||
|
val project = Project("javaUpToDate", GradleVersionRequired.AtLeast("4.3"))
|
||||||
|
|
||||||
|
project.build("build") {
|
||||||
|
assertSuccessful()
|
||||||
|
assertTasksExecuted(":compileKotlin", ":compileJava", ":compileTestKotlin", ":compileTestJava")
|
||||||
|
}
|
||||||
|
|
||||||
|
project.projectFile("MainKotlinClass.kt").modify {
|
||||||
|
it.replace(
|
||||||
|
"private fun privateMethod() = 0",
|
||||||
|
"private fun privateMethod() = \"0\""
|
||||||
|
)
|
||||||
|
}
|
||||||
|
project.build("build") {
|
||||||
|
assertSuccessful()
|
||||||
|
// see https://github.com/gradle/gradle/issues/5013
|
||||||
|
assertTasksExecuted(":compileKotlin", ":compileJava", ":compileTestKotlin", ":compileTestJava")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+21
@@ -0,0 +1,21 @@
|
|||||||
|
buildscript {
|
||||||
|
repositories {
|
||||||
|
mavenLocal()
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
dependencies {
|
||||||
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
apply plugin: "kotlin"
|
||||||
|
apply plugin: "java"
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenLocal()
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
||||||
|
}
|
||||||
+16
@@ -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 foo;
|
||||||
|
|
||||||
|
public class MainJavaClass {
|
||||||
|
public int numberFromKotlin() {
|
||||||
|
return (new MainKotlinClass()).number();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int number() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
+14
@@ -0,0 +1,14 @@
|
|||||||
|
/*
|
||||||
|
* 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 foo
|
||||||
|
|
||||||
|
class MainKotlinClass {
|
||||||
|
fun numberFromJava(): Int = MainJavaClass().number()
|
||||||
|
|
||||||
|
fun number(): Int = 0
|
||||||
|
|
||||||
|
private fun privateMethod() = 0
|
||||||
|
}
|
||||||
+24
@@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* 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 foo;
|
||||||
|
|
||||||
|
public class TestJavaClass {
|
||||||
|
public int numberFromMainKotlin() {
|
||||||
|
return (new MainKotlinClass()).number();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int numberFromMainJava() {
|
||||||
|
return (new MainJavaClass()).number();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int numberFromTestKotlin() {
|
||||||
|
return (new TestKotlinClass()).number();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int number() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
+16
@@ -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 foo
|
||||||
|
|
||||||
|
class TestKotlinClass {
|
||||||
|
fun numberFromMainKotlin(): Int = MainKotlinClass().number()
|
||||||
|
|
||||||
|
fun numberFromMainJava(): Int = MainJavaClass().number()
|
||||||
|
|
||||||
|
fun numberFromTestJava(): Int = TestJavaClass().number()
|
||||||
|
|
||||||
|
fun number(): Int = 0
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user