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") {
|
||||
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
|
||||
@@ -138,7 +138,7 @@ class KotlinAndroid32GradleIT : KotlinAndroid3GradleIT(androidGradlePluginVersio
|
||||
|
||||
class KotlinAndroid30GradleIT : KotlinAndroid3GradleIT(androidGradlePluginVersion = "3.0.0") {
|
||||
override val defaultGradleVersion: GradleVersionRequired
|
||||
get() = GradleVersionRequired.AtLeast("4.1")
|
||||
get() = GradleVersionRequired.InRange("4.1", "4.10.2")
|
||||
}
|
||||
|
||||
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() =
|
||||
super.defaultBuildOptions().copy(
|
||||
|
||||
+4
-2
@@ -461,9 +461,11 @@ abstract class BaseGradleIT {
|
||||
}
|
||||
|
||||
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]+?)" +
|
||||
"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")
|
||||
}
|
||||
|
||||
+2
-2
@@ -30,7 +30,7 @@ class BuildCacheRelocationIT : BaseGradleIT() {
|
||||
override fun defaultBuildOptions(): BuildOptions =
|
||||
super.defaultBuildOptions().copy(
|
||||
withBuildCache = true,
|
||||
androidGradlePluginVersion = "3.0.0",
|
||||
androidGradlePluginVersion = "3.1.0",
|
||||
androidHome = KotlinTestUtils.findAndroidSdk()
|
||||
)
|
||||
|
||||
@@ -47,7 +47,7 @@ class BuildCacheRelocationIT : BaseGradleIT() {
|
||||
|
||||
val (firstProject, secondProject) = (0..1).map { id ->
|
||||
workingDir = workingDirs[id]
|
||||
Project(projectName, GradleVersionRequired.AtLeast("4.3"), projectDirectoryPrefix).apply {
|
||||
Project(projectName, GradleVersionRequired.AtLeast("4.4"), projectDirectoryPrefix).apply {
|
||||
setupWorkingDir()
|
||||
initProject()
|
||||
prepareLocalBuildCache(localBuildCacheDirectory)
|
||||
|
||||
+2
@@ -31,6 +31,8 @@ sealed class GradleVersionRequired(val minVersion: String, val maxVersion: Strin
|
||||
|
||||
class AtLeast(version: String) : GradleVersionRequired(version, null)
|
||||
|
||||
class InRange(minVersion: String, maxVersion: String) : GradleVersionRequired(minVersion, maxVersion)
|
||||
|
||||
object None : GradleVersionRequired(GradleVersionRequired.OLDEST_SUPPORTED, null)
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
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.isLegacyAndroidGradleVersion
|
||||
import org.jetbrains.kotlin.gradle.util.modify
|
||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||
import org.junit.Test
|
||||
@@ -24,7 +24,7 @@ open class Kapt3AndroidIT : Kapt3BaseIT() {
|
||||
get() = "2.3.0"
|
||||
|
||||
override val defaultGradleVersion: GradleVersionRequired
|
||||
get() = GradleVersionRequired.AtLeast("4.1")
|
||||
get() = GradleVersionRequired.InRange("4.1", "4.10.2")
|
||||
|
||||
override fun defaultBuildOptions() =
|
||||
super.defaultBuildOptions().copy(
|
||||
|
||||
+1
-1
@@ -142,7 +142,7 @@ class Kotlin2JsGradlePluginIT : BaseGradleIT() {
|
||||
|
||||
@Test
|
||||
fun testJsCustomSourceSet() {
|
||||
val project = Project("kotlin2JsProjectWithCustomSourceset")
|
||||
val project = Project("kotlin2JsProjectWithCustomSourceset", GradleVersionRequired.AtLeast("4.0"))
|
||||
|
||||
project.build("build") {
|
||||
assertSuccessful()
|
||||
|
||||
+1
-1
@@ -84,7 +84,7 @@ class SimpleKotlinGradleIT : BaseGradleIT() {
|
||||
|
||||
@Test
|
||||
fun testDestinationDirReferencedDuringEvaluation() {
|
||||
Project("destinationDirReferencedDuringEvaluation").build("build") {
|
||||
Project("destinationDirReferencedDuringEvaluation", GradleVersionRequired.AtLeast("4.0")).build("build") {
|
||||
assertSuccessful()
|
||||
assertContains("GreeterTest PASSED")
|
||||
}
|
||||
|
||||
+5
-3
@@ -190,9 +190,11 @@ class VariantAwareDependenciesIT : BaseGradleIT() {
|
||||
group 'com.example.oldmpp'
|
||||
version '1.0'
|
||||
apply plugin: 'maven-publish'
|
||||
publishing {
|
||||
repositories { maven { url "file://${'$'}{rootDir.absolutePath.replace('\\', '/')}/repo" } }
|
||||
publications { kotlin(MavenPublication) { from(components.java) } }
|
||||
afterEvaluate {
|
||||
publishing {
|
||||
repositories { maven { url "file://${'$'}{rootDir.absolutePath.replace('\\', '/')}/repo" } }
|
||||
publications { kotlin(MavenPublication) { from(components.java) } }
|
||||
}
|
||||
}
|
||||
}
|
||||
""".trimIndent()
|
||||
|
||||
+2
-2
@@ -16,11 +16,11 @@ import kotlin.test.assertTrue
|
||||
|
||||
class KotlinAndroidExtensionIT : BaseGradleIT() {
|
||||
override val defaultGradleVersion: GradleVersionRequired
|
||||
get() = GradleVersionRequired.AtLeast("4.1")
|
||||
get() = GradleVersionRequired.AtLeast("4.4")
|
||||
|
||||
override fun defaultBuildOptions(): BuildOptions {
|
||||
return super.defaultBuildOptions().copy(
|
||||
androidGradlePluginVersion = "3.0.0",
|
||||
androidGradlePluginVersion = "3.1.0",
|
||||
androidHome = KotlinTestUtils.findAndroidSdk()
|
||||
)
|
||||
}
|
||||
|
||||
+2
-2
@@ -16,11 +16,11 @@ import kotlin.test.assertTrue
|
||||
|
||||
class KotlinProjectIT : BaseGradleIT() {
|
||||
override val defaultGradleVersion: GradleVersionRequired
|
||||
get() = GradleVersionRequired.AtLeast("4.1")
|
||||
get() = GradleVersionRequired.AtLeast("4.4")
|
||||
|
||||
override fun defaultBuildOptions(): BuildOptions {
|
||||
return super.defaultBuildOptions().copy(
|
||||
androidGradlePluginVersion = "3.0.0",
|
||||
androidGradlePluginVersion = "3.1.0",
|
||||
androidHome = KotlinTestUtils.findAndroidSdk()
|
||||
)
|
||||
}
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
import org.gradle.util.VersionNumber
|
||||
|
||||
apply plugin: 'com.android.application'
|
||||
apply plugin: 'kotlin-android'
|
||||
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
import org.gradle.util.VersionNumber
|
||||
|
||||
apply plugin: 'com.android.test'
|
||||
apply plugin: 'kotlin-android'
|
||||
|
||||
|
||||
+1
-1
@@ -22,4 +22,4 @@ dependencies {
|
||||
}
|
||||
|
||||
// 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"
|
||||
}
|
||||
|
||||
task exit << {
|
||||
System.exit(0)
|
||||
task('exit') {
|
||||
doFirst {
|
||||
System.exit(0)
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ sourceSets {
|
||||
}
|
||||
|
||||
task integrationTest(type: Test) {
|
||||
testClassesDir = sourceSets.integrationTest.output.classesDir
|
||||
testClassesDirs = sourceSets.integrationTest.output.classesDirs
|
||||
classpath = sourceSets.integrationTest.runtimeClasspath
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user