Drop Gradle versions older than 4.9

* Replace `TaskHolder` with `TaskProvider`, remove `TaskHolder`
* Migrate Gradle integration tests to Gradle 4.9+
This commit is contained in:
Sergey Igushkin
2019-08-06 20:49:45 +03:00
parent 9f0c5675bd
commit 43c3122a13
51 changed files with 219 additions and 426 deletions
@@ -21,7 +21,7 @@ open class KotlinAndroid32GradleIT : KotlinAndroid3GradleIT() {
get() = AGPVersion.v3_2_0
override val defaultGradleVersion: GradleVersionRequired
get() = GradleVersionRequired.AtLeast("4.6")
get() = GradleVersionRequired.None
@Test
fun testAndroidWithNewMppApp() = with(Project("new-mpp-android", GradleVersionRequired.AtLeast("5.0"))) {
@@ -399,10 +399,7 @@ class KotlinAndroid30GradleIT : KotlinAndroid3GradleIT() {
get() = GradleVersionRequired.Until("4.10.2")
@Test
fun testOmittedStdlibVersion() = Project(
"AndroidProject",
defaultGradleVersion.maxVersion?.let { GradleVersionRequired.InRange("4.4", it) } ?: GradleVersionRequired.AtLeast("4.4")
).run {
fun testOmittedStdlibVersion() = Project("AndroidProject").run {
setupWorkingDir()
gradleBuildScript("Lib").modify {
@@ -25,7 +25,7 @@ class BuildCacheIT : BaseGradleIT() {
super.defaultBuildOptions().copy(withBuildCache = true)
companion object {
private val GRADLE_VERSION = GradleVersionRequired.AtLeast("4.3")
private val GRADLE_VERSION = GradleVersionRequired.None
}
@Test
@@ -48,7 +48,7 @@ class BuildCacheRelocationIT : BaseGradleIT() {
val (firstProject, secondProject) = (0..1).map { id ->
workingDir = workingDirs[id]
Project(projectName, GradleVersionRequired.AtLeast("4.4"), projectDirectoryPrefix).apply {
Project(projectName, directoryPrefix = projectDirectoryPrefix).apply {
setupWorkingDir()
initProject()
prepareLocalBuildCache(localBuildCacheDirectory)
@@ -17,7 +17,7 @@ import kotlin.test.fail
class CocoaPodsIT : BaseGradleIT() {
// We use Kotlin DSL. Earlier Gradle versions fail at accessors codegen.
val gradleVersion = GradleVersionRequired.AtLeast("4.9")
val gradleVersion = GradleVersionRequired.None
val PODFILE_IMPORT_DIRECTIVE_PLACEHOLDER = "<import_mode_directive>"
@@ -21,7 +21,7 @@ import org.junit.Assume
sealed class GradleVersionRequired(val minVersion: String, val maxVersion: String?) {
companion object {
const val OLDEST_SUPPORTED = "4.3"
const val OLDEST_SUPPORTED = "4.9"
}
class Exact(version: String) : GradleVersionRequired(version, version)
@@ -11,7 +11,7 @@ import org.junit.Test
class JavaUpToDateIT : BaseGradleIT() {
@Test
fun testKotlinMethodBodyIsChanged() {
val project = Project("javaUpToDate", GradleVersionRequired.AtLeast("4.3"))
val project = Project("javaUpToDate")
project.build("build") {
assertSuccessful()
@@ -33,7 +33,7 @@ class JavaUpToDateIT : BaseGradleIT() {
@Test
fun testKotlinNewLineAdded() {
val project = Project("javaUpToDate", GradleVersionRequired.AtLeast("4.3"))
val project = Project("javaUpToDate")
project.build("build") {
assertSuccessful()
@@ -50,7 +50,7 @@ class JavaUpToDateIT : BaseGradleIT() {
@Test
fun testPrivateMethodSignatureChanged() {
val project = Project("javaUpToDate", GradleVersionRequired.AtLeast("4.3"))
val project = Project("javaUpToDate")
project.build("build") {
assertSuccessful()
@@ -16,7 +16,7 @@ open class Kapt3Android32IT : Kapt3AndroidIT() {
get() = AGPVersion.v3_2_0
override val defaultGradleVersion: GradleVersionRequired
get() = GradleVersionRequired.AtLeast("4.6")
get() = GradleVersionRequired.None
}
open class Kapt3Android33IT : Kapt3AndroidIT() {
@@ -81,7 +81,7 @@ class Kapt3Android31IT : Kapt3AndroidIT() {
// there is a weird validation exception in testICWithAnonymousClasses with 5.0 todo: fix it
override val defaultGradleVersion: GradleVersionRequired
get() = GradleVersionRequired.InRange("4.4", "4.10.2")
get() = GradleVersionRequired.Until("4.10.2")
}
open class Kapt3AndroidIT : Kapt3BaseIT() {
@@ -46,12 +46,8 @@ class Kapt3WorkersIT : Kapt3IT() {
@Test
fun testJavacIsLoadedOnce() {
// todo: actual minimum version is 4.3, but I had some problems. Investigate later.
// todo: consider minimum version for the whole class, with Gradle <4.3 all tests duplicate tests without workers
val gradleVersionRequired = GradleVersionRequired.AtLeast("4.5.1")
val project =
Project("javacIsLoadedOnce", directoryPrefix = "kapt2", gradleVersionRequirement = gradleVersionRequired)
Project("javacIsLoadedOnce", directoryPrefix = "kapt2")
project.build("build") {
assertSuccessful()
assertSubstringCount("Loaded com.sun.tools.javac.util.Context from", 1)
@@ -60,10 +56,8 @@ class Kapt3WorkersIT : Kapt3IT() {
@Test
fun testKaptSkipped() {
val gradleVersionRequired = GradleVersionRequired.AtLeast("4.3")
val project =
Project("kaptSkipped", directoryPrefix = "kapt2", gradleVersionRequirement = gradleVersionRequired)
Project("kaptSkipped", directoryPrefix = "kapt2")
project.build("build") {
assertSuccessful()
}
@@ -36,13 +36,7 @@ open class KaptIncrementalIT : BaseGradleIT() {
assertSuccessful()
assertTasksExecuted(":kaptGenerateStubsKotlin", ":compileKotlin")
assertTasksUpToDate(":kaptKotlin")
// compileJava is up-to-date with Gradle >= 4.3, executed otherwise
if (project.testGradleVersionAtLeast("4.3")) {
assertTasksUpToDate(":compileJava")
} else {
assertTasksExecuted(":compileJava")
}
assertTasksUpToDate(":compileJava")
}
}
@@ -366,7 +366,7 @@ class KotlinGradleIT : BaseGradleIT() {
@Test
fun testOmittedStdlibVersion() {
val project = Project("kotlinProject", GradleVersionRequired.AtLeast("4.4"))
val project = Project("kotlinProject")
project.setupWorkingDir()
File(project.projectDir, "build.gradle").modify {
it.replace("kotlin-stdlib:\$kotlin_version", "kotlin-stdlib").apply { check(!equals(it)) } + "\n" + """
@@ -739,7 +739,7 @@ class KotlinGradleIT : BaseGradleIT() {
@Test
fun testDefaultKotlinVersionIsNotAffectedByTransitiveDependencies() =
with(Project("simpleProject", GradleVersionRequired.AtLeast("4.4"))) {
with(Project("simpleProject")) {
setupWorkingDir()
// Add a dependency with an explicit lower Kotlin version that has a kotlin-stdlib transitive dependency:
gradleBuildScript().appendText("\ndependencies { compile 'org.jetbrains.kotlin:kotlin-reflect:1.2.71' }")
@@ -753,7 +753,7 @@ class KotlinGradleIT : BaseGradleIT() {
@Test
fun testKotlinJvmProjectPublishesKotlinApiDependenciesAsCompile() =
with(Project("simpleProject", GradleVersionRequired.AtLeast("4.4"))) {
with(Project("simpleProject")) {
setupWorkingDir()
gradleBuildScript().appendText(
"\n" + """
@@ -786,11 +786,10 @@ class KotlinGradleIT : BaseGradleIT() {
@Test
fun testNoTaskConfigurationForcing() {
val gradleVersionRequirement = GradleVersionRequired.AtLeast("4.9")
val projects = listOf(
Project("simpleProject", gradleVersionRequirement),
Project("kotlin2JsNoOutputFileProject", gradleVersionRequirement),
Project("sample-app", gradleVersionRequirement, "new-mpp-lib-and-app")
Project("simpleProject"),
Project("kotlin2JsNoOutputFileProject"),
Project("sample-app", directoryPrefix = "new-mpp-lib-and-app")
)
projects.forEach {
@@ -925,7 +924,7 @@ class KotlinGradleIT : BaseGradleIT() {
@Test
fun testUserDefinedAttributesInSinglePlatformProject() =
with(Project("multiprojectWithDependency", GradleVersionRequired.AtLeast("4.7"))) {
with(Project("multiprojectWithDependency")) {
setupWorkingDir()
gradleBuildScript("projA").appendText(
"\n" + """
@@ -52,7 +52,7 @@ fun configure(): NativeTargets {
}
class NewMultiplatformIT : BaseGradleIT() {
val gradleVersion = GradleVersionRequired.AtLeast("4.7")
val gradleVersion = GradleVersionRequired.None
val nativeHostTargetName = configure().current
val supportedNativeTargets = configure().supported
@@ -70,17 +70,15 @@ class NewMultiplatformIT : BaseGradleIT() {
@Test
fun testLibAndAppWithGradleKotlinDsl() = doTestLibAndApp(
"sample-lib-gradle-kotlin-dsl",
"sample-app-gradle-kotlin-dsl",
GradleVersionRequired.AtLeast("4.9") // earlier Gradle versions fail at accessors codegen
"sample-app-gradle-kotlin-dsl"
)
private fun doTestLibAndApp(
libProjectName: String, appProjectName: String,
gradleVersionRequired: GradleVersionRequired = gradleVersion
libProjectName: String, appProjectName: String
) {
val libProject = transformProjectWithPluginsDsl(libProjectName, gradleVersionRequired, "new-mpp-lib-and-app")
val appProject = transformProjectWithPluginsDsl(appProjectName, gradleVersionRequired, "new-mpp-lib-and-app")
val oldStyleAppProject = Project("sample-old-style-app", gradleVersionRequired, "new-mpp-lib-and-app")
val libProject = transformProjectWithPluginsDsl(libProjectName, directoryPrefix = "new-mpp-lib-and-app")
val appProject = transformProjectWithPluginsDsl(appProjectName, directoryPrefix = "new-mpp-lib-and-app")
val oldStyleAppProject = Project("sample-old-style-app", directoryPrefix = "new-mpp-lib-and-app")
val compileTasksNames =
listOf("Jvm6", "NodeJs", "Metadata", "Wasm32", nativeHostTargetName.capitalize()).map { ":compileKotlin$it" }
@@ -2017,7 +2015,7 @@ class NewMultiplatformIT : BaseGradleIT() {
}
@Test
fun testSuggestionToEnableMetadata() = with(Project("sample-lib", GradleVersionRequired.AtLeast("4.7"), "new-mpp-lib-and-app")) {
fun testSuggestionToEnableMetadata() = with(Project("sample-lib", directoryPrefix = "new-mpp-lib-and-app")) {
build {
assertNotContains(GRADLE_NO_METADATA_WARNING)
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.gradle.util.testResolveAllConfigurations
import org.junit.Test
class VariantAwareDependenciesIT : BaseGradleIT() {
private val gradleVersion = GradleVersionRequired.AtLeast("4.8")
private val gradleVersion = GradleVersionRequired.None
@Test
fun testJvmKtAppResolvesMppLib() {
@@ -245,7 +245,7 @@ class VariantAwareDependenciesIT : BaseGradleIT() {
@Test
fun testJvmWithJavaProjectCanBeResolvedInAllConfigurations() =
with(Project("new-mpp-jvm-with-java-multi-module", GradleVersionRequired.AtLeast("4.7"))) {
with(Project("new-mpp-jvm-with-java-multi-module")) {
testResolveAllConfigurations("app")
}
@@ -19,7 +19,7 @@ class WorkersIT : BaseGradleIT() {
}
private fun parallelTasksImpl(isParallel: Boolean) =
with(Project("new-mpp-parallel", GradleVersionRequired.AtLeast("4.7"))) {
with(Project("new-mpp-parallel")) {
val options = defaultBuildOptions().copy(parallelTasksInProject = isParallel, withDaemon = false)
val traceLoading = "-Dorg.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.trace.loading=true"
build("assemble", traceLoading, options = options) {
@@ -17,7 +17,7 @@ import kotlin.test.assertTrue
class KotlinAndroidExtensionIT : BaseGradleIT() {
override val defaultGradleVersion: GradleVersionRequired
get() = GradleVersionRequired.AtLeast("4.4")
get() = GradleVersionRequired.None
override fun defaultBuildOptions(): BuildOptions {
return super.defaultBuildOptions().copy(
@@ -17,7 +17,7 @@ import kotlin.test.assertTrue
class KotlinProjectIT : BaseGradleIT() {
override val defaultGradleVersion: GradleVersionRequired
get() = GradleVersionRequired.AtLeast("4.4")
get() = GradleVersionRequired.None
override fun defaultBuildOptions(): BuildOptions {
return super.defaultBuildOptions().copy(