Fix some tests for Gradle 5.0 and update some dependency versions
* Introduce GradleVersionRequired.InRange and thus prevent older tests (e.g. Android 2.3.0) from running with newer Gradle versions * Add a task outputs pattern suitable for Gradle 5.0 * Run some of the Android tests with AGP 3.1.0 (and Gradle 4.4) instead of 3.0.0 to ensure compatibility with Gradle 5.0 * Update test projects according to Gradle 5.0 dropped deprecated features: classesDir, left-shift operator, default org.gradle.util.* imports * Fix a Gradle test after Gradle 5.0 changed `publishing` behavior to run the closure eagerly rather than after evaluation
This commit is contained in:
+3
-3
@@ -14,7 +14,7 @@ import kotlin.test.assertTrue
|
|||||||
|
|
||||||
class KotlinAndroidGradleIT : AbstractKotlinAndroidGradleTests(androidGradlePluginVersion = "2.3.0") {
|
class KotlinAndroidGradleIT : AbstractKotlinAndroidGradleTests(androidGradlePluginVersion = "2.3.0") {
|
||||||
override val defaultGradleVersion: GradleVersionRequired
|
override val defaultGradleVersion: GradleVersionRequired
|
||||||
get() = GradleVersionRequired.AtLeast("3.4")
|
get() = GradleVersionRequired.InRange("3.4", "4.10.2")
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO If we there is a way to fetch the latest Android plugin version, test against the latest version
|
// TODO If we there is a way to fetch the latest Android plugin version, test against the latest version
|
||||||
@@ -138,7 +138,7 @@ class KotlinAndroid32GradleIT : KotlinAndroid3GradleIT(androidGradlePluginVersio
|
|||||||
|
|
||||||
class KotlinAndroid30GradleIT : KotlinAndroid3GradleIT(androidGradlePluginVersion = "3.0.0") {
|
class KotlinAndroid30GradleIT : KotlinAndroid3GradleIT(androidGradlePluginVersion = "3.0.0") {
|
||||||
override val defaultGradleVersion: GradleVersionRequired
|
override val defaultGradleVersion: GradleVersionRequired
|
||||||
get() = GradleVersionRequired.AtLeast("4.1")
|
get() = GradleVersionRequired.InRange("4.1", "4.10.2")
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class KotlinAndroid3GradleIT(androidGradlePluginVersion: String) : AbstractKotlinAndroidGradleTests(androidGradlePluginVersion) {
|
abstract class KotlinAndroid3GradleIT(androidGradlePluginVersion: String) : AbstractKotlinAndroidGradleTests(androidGradlePluginVersion) {
|
||||||
@@ -170,7 +170,7 @@ abstract class KotlinAndroid3GradleIT(androidGradlePluginVersion: String) : Abst
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class AbstractKotlinAndroidGradleTests(private val androidGradlePluginVersion: String) : BaseGradleIT() {
|
abstract class AbstractKotlinAndroidGradleTests(val androidGradlePluginVersion: String) : BaseGradleIT() {
|
||||||
|
|
||||||
override fun defaultBuildOptions() =
|
override fun defaultBuildOptions() =
|
||||||
super.defaultBuildOptions().copy(
|
super.defaultBuildOptions().copy(
|
||||||
|
|||||||
+4
-2
@@ -461,9 +461,11 @@ abstract class BaseGradleIT {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun CompiledProject.getOutputForTask(taskName: String): String {
|
fun CompiledProject.getOutputForTask(taskName: String): String {
|
||||||
val taskOutputRegex = ("\\[LIFECYCLE] \\[class org\\.gradle(?:\\.internal\\.buildevents)?\\.TaskExecutionLogger] :$taskName" +
|
val taskOutputRegex = ("(?:\\[LIFECYCLE] \\[class org\\.gradle(?:\\.internal\\.buildevents)?\\.TaskExecutionLogger] :$taskName|" +
|
||||||
|
"\\[org\\.gradle\\.execution\\.plan\\.DefaultPlanExecutor\\] :$taskName.*?started)" +
|
||||||
"([\\s\\S]+?)" +
|
"([\\s\\S]+?)" +
|
||||||
"Finished executing task ':$taskName'").toRegex()
|
"(?:Finished executing task ':$taskName'|" +
|
||||||
|
"\\[org\\.gradle\\.execution\\.plan\\.DefaultPlanExecutor\\] :$taskName.*?completed)").toRegex()
|
||||||
|
|
||||||
return taskOutputRegex.find(output)?.run { groupValues[1] } ?: error("Cannot find output for task $taskName")
|
return taskOutputRegex.find(output)?.run { groupValues[1] } ?: error("Cannot find output for task $taskName")
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -30,7 +30,7 @@ class BuildCacheRelocationIT : BaseGradleIT() {
|
|||||||
override fun defaultBuildOptions(): BuildOptions =
|
override fun defaultBuildOptions(): BuildOptions =
|
||||||
super.defaultBuildOptions().copy(
|
super.defaultBuildOptions().copy(
|
||||||
withBuildCache = true,
|
withBuildCache = true,
|
||||||
androidGradlePluginVersion = "3.0.0",
|
androidGradlePluginVersion = "3.1.0",
|
||||||
androidHome = KotlinTestUtils.findAndroidSdk()
|
androidHome = KotlinTestUtils.findAndroidSdk()
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -47,7 +47,7 @@ class BuildCacheRelocationIT : BaseGradleIT() {
|
|||||||
|
|
||||||
val (firstProject, secondProject) = (0..1).map { id ->
|
val (firstProject, secondProject) = (0..1).map { id ->
|
||||||
workingDir = workingDirs[id]
|
workingDir = workingDirs[id]
|
||||||
Project(projectName, GradleVersionRequired.AtLeast("4.3"), projectDirectoryPrefix).apply {
|
Project(projectName, GradleVersionRequired.AtLeast("4.4"), projectDirectoryPrefix).apply {
|
||||||
setupWorkingDir()
|
setupWorkingDir()
|
||||||
initProject()
|
initProject()
|
||||||
prepareLocalBuildCache(localBuildCacheDirectory)
|
prepareLocalBuildCache(localBuildCacheDirectory)
|
||||||
|
|||||||
+2
@@ -31,6 +31,8 @@ sealed class GradleVersionRequired(val minVersion: String, val maxVersion: Strin
|
|||||||
|
|
||||||
class AtLeast(version: String) : GradleVersionRequired(version, null)
|
class AtLeast(version: String) : GradleVersionRequired(version, null)
|
||||||
|
|
||||||
|
class InRange(minVersion: String, maxVersion: String) : GradleVersionRequired(minVersion, maxVersion)
|
||||||
|
|
||||||
object None : GradleVersionRequired(GradleVersionRequired.OLDEST_SUPPORTED, null)
|
object None : GradleVersionRequired(GradleVersionRequired.OLDEST_SUPPORTED, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -1,7 +1,7 @@
|
|||||||
package org.jetbrains.kotlin.gradle
|
package org.jetbrains.kotlin.gradle
|
||||||
|
|
||||||
import org.jetbrains.kotlin.gradle.util.isLegacyAndroidGradleVersion
|
|
||||||
import org.jetbrains.kotlin.gradle.util.getFileByName
|
import org.jetbrains.kotlin.gradle.util.getFileByName
|
||||||
|
import org.jetbrains.kotlin.gradle.util.isLegacyAndroidGradleVersion
|
||||||
import org.jetbrains.kotlin.gradle.util.modify
|
import org.jetbrains.kotlin.gradle.util.modify
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
@@ -24,7 +24,7 @@ open class Kapt3AndroidIT : Kapt3BaseIT() {
|
|||||||
get() = "2.3.0"
|
get() = "2.3.0"
|
||||||
|
|
||||||
override val defaultGradleVersion: GradleVersionRequired
|
override val defaultGradleVersion: GradleVersionRequired
|
||||||
get() = GradleVersionRequired.AtLeast("4.1")
|
get() = GradleVersionRequired.InRange("4.1", "4.10.2")
|
||||||
|
|
||||||
override fun defaultBuildOptions() =
|
override fun defaultBuildOptions() =
|
||||||
super.defaultBuildOptions().copy(
|
super.defaultBuildOptions().copy(
|
||||||
|
|||||||
+1
-1
@@ -142,7 +142,7 @@ class Kotlin2JsGradlePluginIT : BaseGradleIT() {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testJsCustomSourceSet() {
|
fun testJsCustomSourceSet() {
|
||||||
val project = Project("kotlin2JsProjectWithCustomSourceset")
|
val project = Project("kotlin2JsProjectWithCustomSourceset", GradleVersionRequired.AtLeast("4.0"))
|
||||||
|
|
||||||
project.build("build") {
|
project.build("build") {
|
||||||
assertSuccessful()
|
assertSuccessful()
|
||||||
|
|||||||
+1
-1
@@ -84,7 +84,7 @@ class SimpleKotlinGradleIT : BaseGradleIT() {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testDestinationDirReferencedDuringEvaluation() {
|
fun testDestinationDirReferencedDuringEvaluation() {
|
||||||
Project("destinationDirReferencedDuringEvaluation").build("build") {
|
Project("destinationDirReferencedDuringEvaluation", GradleVersionRequired.AtLeast("4.0")).build("build") {
|
||||||
assertSuccessful()
|
assertSuccessful()
|
||||||
assertContains("GreeterTest PASSED")
|
assertContains("GreeterTest PASSED")
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-3
@@ -190,9 +190,11 @@ class VariantAwareDependenciesIT : BaseGradleIT() {
|
|||||||
group 'com.example.oldmpp'
|
group 'com.example.oldmpp'
|
||||||
version '1.0'
|
version '1.0'
|
||||||
apply plugin: 'maven-publish'
|
apply plugin: 'maven-publish'
|
||||||
publishing {
|
afterEvaluate {
|
||||||
repositories { maven { url "file://${'$'}{rootDir.absolutePath.replace('\\', '/')}/repo" } }
|
publishing {
|
||||||
publications { kotlin(MavenPublication) { from(components.java) } }
|
repositories { maven { url "file://${'$'}{rootDir.absolutePath.replace('\\', '/')}/repo" } }
|
||||||
|
publications { kotlin(MavenPublication) { from(components.java) } }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
""".trimIndent()
|
""".trimIndent()
|
||||||
|
|||||||
+2
-2
@@ -16,11 +16,11 @@ import kotlin.test.assertTrue
|
|||||||
|
|
||||||
class KotlinAndroidExtensionIT : BaseGradleIT() {
|
class KotlinAndroidExtensionIT : BaseGradleIT() {
|
||||||
override val defaultGradleVersion: GradleVersionRequired
|
override val defaultGradleVersion: GradleVersionRequired
|
||||||
get() = GradleVersionRequired.AtLeast("4.1")
|
get() = GradleVersionRequired.AtLeast("4.4")
|
||||||
|
|
||||||
override fun defaultBuildOptions(): BuildOptions {
|
override fun defaultBuildOptions(): BuildOptions {
|
||||||
return super.defaultBuildOptions().copy(
|
return super.defaultBuildOptions().copy(
|
||||||
androidGradlePluginVersion = "3.0.0",
|
androidGradlePluginVersion = "3.1.0",
|
||||||
androidHome = KotlinTestUtils.findAndroidSdk()
|
androidHome = KotlinTestUtils.findAndroidSdk()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -16,11 +16,11 @@ import kotlin.test.assertTrue
|
|||||||
|
|
||||||
class KotlinProjectIT : BaseGradleIT() {
|
class KotlinProjectIT : BaseGradleIT() {
|
||||||
override val defaultGradleVersion: GradleVersionRequired
|
override val defaultGradleVersion: GradleVersionRequired
|
||||||
get() = GradleVersionRequired.AtLeast("4.1")
|
get() = GradleVersionRequired.AtLeast("4.4")
|
||||||
|
|
||||||
override fun defaultBuildOptions(): BuildOptions {
|
override fun defaultBuildOptions(): BuildOptions {
|
||||||
return super.defaultBuildOptions().copy(
|
return super.defaultBuildOptions().copy(
|
||||||
androidGradlePluginVersion = "3.0.0",
|
androidGradlePluginVersion = "3.1.0",
|
||||||
androidHome = KotlinTestUtils.findAndroidSdk()
|
androidHome = KotlinTestUtils.findAndroidSdk()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
+2
@@ -1,3 +1,5 @@
|
|||||||
|
import org.gradle.util.VersionNumber
|
||||||
|
|
||||||
apply plugin: 'com.android.application'
|
apply plugin: 'com.android.application'
|
||||||
apply plugin: 'kotlin-android'
|
apply plugin: 'kotlin-android'
|
||||||
|
|
||||||
|
|||||||
+2
@@ -1,3 +1,5 @@
|
|||||||
|
import org.gradle.util.VersionNumber
|
||||||
|
|
||||||
apply plugin: 'com.android.test'
|
apply plugin: 'com.android.test'
|
||||||
apply plugin: 'kotlin-android'
|
apply plugin: 'kotlin-android'
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -22,4 +22,4 @@ dependencies {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// important to test that destinationDir is configured before evaluation
|
// important to test that destinationDir is configured before evaluation
|
||||||
test.testClassesDir = project.tasks.compileTestKotlin.destinationDir
|
test.testClassesDirs = files(project.tasks.compileTestKotlin.destinationDir)
|
||||||
|
|||||||
+4
-2
@@ -19,6 +19,8 @@ dependencies {
|
|||||||
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
||||||
}
|
}
|
||||||
|
|
||||||
task exit << {
|
task('exit') {
|
||||||
System.exit(0)
|
doFirst {
|
||||||
|
System.exit(0)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -20,7 +20,7 @@ sourceSets {
|
|||||||
}
|
}
|
||||||
|
|
||||||
task integrationTest(type: Test) {
|
task integrationTest(type: Test) {
|
||||||
testClassesDir = sourceSets.integrationTest.output.classesDir
|
testClassesDirs = sourceSets.integrationTest.output.classesDirs
|
||||||
classpath = sourceSets.integrationTest.runtimeClasspath
|
classpath = sourceSets.integrationTest.runtimeClasspath
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user