Allow overriding default Gradle version per test class

This commit is contained in:
Alexey Tsvetkov
2018-07-02 19:47:42 +03:00
parent 05fa8b7451
commit bab8c97c09
3 changed files with 40 additions and 37 deletions
@@ -10,14 +10,18 @@ import org.junit.Test
import java.io.File import java.io.File
class KotlinAndroidGradleIT : class KotlinAndroidGradleIT : AbstractKotlinAndroidGradleTests(androidGradlePluginVersion = "2.3.0") {
AbstractKotlinAndroidGradleTests(gradleVersion = GradleVersionRequired.AtLeast("3.4"), androidGradlePluginVersion = "2.3.0") override val defaultGradleVersion: GradleVersionRequired
get() = GradleVersionRequired.AtLeast("3.4")
}
// 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
class KotlinAndroid32GradleIT : KotlinAndroid3GradleIT(GradleVersionRequired.AtLeast("4.6"), "3.2.0-beta01") { class KotlinAndroid32GradleIT : KotlinAndroid3GradleIT(androidGradlePluginVersion = "3.2.0-beta01") {
override val defaultGradleVersion: GradleVersionRequired
get() = GradleVersionRequired.AtLeast("4.6")
@Test @Test
fun testKaptUsingApOptionProvidersAsNestedInputOutput() = with(Project("AndroidProject", gradleVersion)) { fun testKaptUsingApOptionProvidersAsNestedInputOutput() = with(Project("AndroidProject")) {
setupWorkingDir() setupWorkingDir()
gradleBuildScript(subproject = "Android").appendText( gradleBuildScript(subproject = "Android").appendText(
@@ -80,16 +84,15 @@ class KotlinAndroid32GradleIT : KotlinAndroid3GradleIT(GradleVersionRequired.AtL
} }
} }
class KotlinAndroid30GradleIT : KotlinAndroid3GradleIT(GradleVersionRequired.AtLeast("4.1"), "3.0.0") class KotlinAndroid30GradleIT : KotlinAndroid3GradleIT(androidGradlePluginVersion = "3.0.0") {
override val defaultGradleVersion: GradleVersionRequired
abstract class KotlinAndroid3GradleIT( get() = GradleVersionRequired.AtLeast("4.1")
gradleVersionRequired: GradleVersionRequired, }
androidGradlePluginVersion: String
) : AbstractKotlinAndroidGradleTests(gradleVersionRequired, androidGradlePluginVersion) {
abstract class KotlinAndroid3GradleIT(androidGradlePluginVersion: String) : AbstractKotlinAndroidGradleTests(androidGradlePluginVersion) {
@Test @Test
fun testApplyWithFeaturePlugin() { fun testApplyWithFeaturePlugin() {
val project = Project("AndroidProject", gradleVersion) val project = Project("AndroidProject")
project.setupWorkingDir() project.setupWorkingDir()
File(project.projectDir, "Lib/build.gradle").modify { text -> File(project.projectDir, "Lib/build.gradle").modify { text ->
@@ -115,10 +118,7 @@ abstract class KotlinAndroid3GradleIT(
} }
} }
abstract class AbstractKotlinAndroidGradleTests( abstract class AbstractKotlinAndroidGradleTests(private val androidGradlePluginVersion: String) : BaseGradleIT() {
protected val gradleVersion: GradleVersionRequired,
private val androidGradlePluginVersion: String
) : BaseGradleIT() {
override fun defaultBuildOptions() = override fun defaultBuildOptions() =
super.defaultBuildOptions().copy( super.defaultBuildOptions().copy(
@@ -128,7 +128,7 @@ abstract class AbstractKotlinAndroidGradleTests(
@Test @Test
fun testSimpleCompile() { fun testSimpleCompile() {
val project = Project("AndroidProject", gradleVersion) val project = Project("AndroidProject")
val modules = listOf("Android", "Lib") val modules = listOf("Android", "Lib")
val flavors = listOf("Flavor1", "Flavor2") val flavors = listOf("Flavor1", "Flavor2")
@@ -171,7 +171,7 @@ abstract class AbstractKotlinAndroidGradleTests(
@Test @Test
fun testAssembleAndroidTestFirst() { fun testAssembleAndroidTestFirst() {
val project = Project("AndroidProject", gradleVersion, minLogLevel = LogLevel.INFO) val project = Project("AndroidProject", minLogLevel = LogLevel.INFO)
// Execute 'assembleAndroidTest' first, without 'build' side effects // Execute 'assembleAndroidTest' first, without 'build' side effects
project.build("assembleAndroidTest") { project.build("assembleAndroidTest") {
@@ -192,7 +192,7 @@ abstract class AbstractKotlinAndroidGradleTests(
@Test @Test
fun testIncrementalCompile() { fun testIncrementalCompile() {
val project = Project("AndroidIncrementalSingleModuleProject", gradleVersion) val project = Project("AndroidIncrementalSingleModuleProject")
val options = defaultBuildOptions().copy(incremental = true) val options = defaultBuildOptions().copy(incremental = true)
project.build("assembleDebug", options = options) { project.build("assembleDebug", options = options) {
@@ -221,7 +221,7 @@ fun getSomething() = 10
@Test @Test
fun testMultiModuleIC() { fun testMultiModuleIC() {
val project = Project("AndroidProject", gradleVersion) val project = Project("AndroidProject")
val options = defaultBuildOptions().copy(incremental = true) val options = defaultBuildOptions().copy(incremental = true)
project.build("assembleDebug", options = options) { project.build("assembleDebug", options = options) {
@@ -240,7 +240,7 @@ fun getSomething() = 10
@Test @Test
fun testMultiModuleICNonAndroidModuleIsChanged() { fun testMultiModuleICNonAndroidModuleIsChanged() {
val project = Project("AndroidIncrementalMultiModule", gradleVersion) val project = Project("AndroidIncrementalMultiModule")
val options = defaultBuildOptions().copy(incremental = true, kotlinDaemonDebugPort = null) val options = defaultBuildOptions().copy(incremental = true, kotlinDaemonDebugPort = null)
project.build("assembleDebug", options = options) { project.build("assembleDebug", options = options) {
@@ -266,7 +266,7 @@ fun getSomething() = 10
@Test @Test
fun testIncrementalBuildWithNoChanges() { fun testIncrementalBuildWithNoChanges() {
val project = Project("AndroidIncrementalSingleModuleProject", gradleVersion) val project = Project("AndroidIncrementalSingleModuleProject")
val tasksToExecute = listOf( val tasksToExecute = listOf(
":app:compileDebugKotlin", ":app:compileDebugKotlin",
":app:compileDebugJavaWithJavac" ":app:compileDebugJavaWithJavac"
@@ -285,7 +285,7 @@ fun getSomething() = 10
@Test @Test
fun testAndroidDaggerIC() { fun testAndroidDaggerIC() {
val project = Project("AndroidDaggerProject", gradleVersion) val project = Project("AndroidDaggerProject")
val options = defaultBuildOptions().copy(incremental = true) val options = defaultBuildOptions().copy(incremental = true)
project.build("assembleDebug", options = options) { project.build("assembleDebug", options = options) {
@@ -314,7 +314,7 @@ fun getSomething() = 10
@Test @Test
fun testAndroidIcepickProject() { fun testAndroidIcepickProject() {
val project = Project("AndroidIcepickProject", gradleVersion) val project = Project("AndroidIcepickProject")
val options = defaultBuildOptions().copy(incremental = false) val options = defaultBuildOptions().copy(incremental = false)
project.build("assembleDebug", options = options) { project.build("assembleDebug", options = options) {
@@ -324,7 +324,7 @@ fun getSomething() = 10
@Test @Test
fun testAndroidExtensions() { fun testAndroidExtensions() {
val project = Project("AndroidExtensionsProject", gradleVersion) val project = Project("AndroidExtensionsProject")
val options = defaultBuildOptions().copy(incremental = false) val options = defaultBuildOptions().copy(incremental = false)
project.build("assembleDebug", options = options) { project.build("assembleDebug", options = options) {
@@ -334,7 +334,7 @@ fun getSomething() = 10
@Test @Test
fun testAndroidExtensionsIncremental() { fun testAndroidExtensionsIncremental() {
val project = Project("AndroidExtensionsProject", gradleVersion) val project = Project("AndroidExtensionsProject")
val options = defaultBuildOptions().copy(incremental = true) val options = defaultBuildOptions().copy(incremental = true)
project.build("assembleDebug", options = options) { project.build("assembleDebug", options = options) {
@@ -365,7 +365,7 @@ fun getSomething() = 10
return return
} }
val project = Project("AndroidExtensionsManyVariants", gradleVersion) val project = Project("AndroidExtensionsManyVariants")
val options = defaultBuildOptions().copy(incremental = false) val options = defaultBuildOptions().copy(incremental = false)
project.build("assemble", options = options) { project.build("assemble", options = options) {
@@ -382,7 +382,7 @@ fun getSomething() = 10
@Test @Test
fun testAndroidExtensionsSpecificFeatures() { fun testAndroidExtensionsSpecificFeatures() {
val project = Project("AndroidExtensionsSpecificFeatures", gradleVersion) val project = Project("AndroidExtensionsSpecificFeatures")
val options = defaultBuildOptions().copy(incremental = false) val options = defaultBuildOptions().copy(incremental = false)
project.build("assemble", options = options) { project.build("assemble", options = options) {
@@ -405,7 +405,7 @@ fun getSomething() = 10
} }
@Test @Test
fun testMultiplatformAndroidCompile() = with(Project("multiplatformAndroidProject", gradleVersion)) { fun testMultiplatformAndroidCompile() = with(Project("multiplatformAndroidProject")) {
setupWorkingDir() setupWorkingDir()
if (!isLegacyAndroidGradleVersion(androidGradlePluginVersion)) { if (!isLegacyAndroidGradleVersion(androidGradlePluginVersion)) {
@@ -19,6 +19,9 @@ abstract class BaseGradleIT {
protected open fun defaultBuildOptions(): BuildOptions = BuildOptions(withDaemon = true) protected open fun defaultBuildOptions(): BuildOptions = BuildOptions(withDaemon = true)
protected open val defaultGradleVersion: GradleVersionRequired
get() = GradleVersionRequired.None
@Before @Before
fun setUp() { fun setUp() {
workingDir = createTempDir("BaseGradleIT") workingDir = createTempDir("BaseGradleIT")
@@ -179,7 +182,7 @@ abstract class BaseGradleIT {
open inner class Project( open inner class Project(
val projectName: String, val projectName: String,
val gradleVersionRequirement: GradleVersionRequired = GradleVersionRequired.None, val gradleVersionRequirement: GradleVersionRequired = defaultGradleVersion,
directoryPrefix: String? = null, directoryPrefix: String? = null,
val minLogLevel: LogLevel = LogLevel.DEBUG val minLogLevel: LogLevel = LogLevel.DEBUG
) { ) {
@@ -14,7 +14,7 @@ open class Kapt3Android32IT : Kapt3AndroidIT() {
override val androidGradlePluginVersion: String override val androidGradlePluginVersion: String
get() = "3.2.0-beta01" get() = "3.2.0-beta01"
override val gradleVersion: GradleVersionRequired override val defaultGradleVersion: GradleVersionRequired
get() = GradleVersionRequired.AtLeast("4.6") get() = GradleVersionRequired.AtLeast("4.6")
} }
@@ -22,7 +22,7 @@ open class Kapt3AndroidIT : Kapt3BaseIT() {
protected open val androidGradlePluginVersion: String protected open val androidGradlePluginVersion: String
get() = "2.3.0" get() = "2.3.0"
protected open val gradleVersion: GradleVersionRequired override val defaultGradleVersion: GradleVersionRequired
get() = GradleVersionRequired.AtLeast("4.1") get() = GradleVersionRequired.AtLeast("4.1")
override fun defaultBuildOptions() = override fun defaultBuildOptions() =
@@ -33,7 +33,7 @@ open class Kapt3AndroidIT : Kapt3BaseIT() {
@Test @Test
fun testButterKnife() { fun testButterKnife() {
val project = Project("android-butterknife", gradleVersion, directoryPrefix = "kapt2") val project = Project("android-butterknife", directoryPrefix = "kapt2")
project.build("assembleDebug") { project.build("assembleDebug") {
assertSuccessful() assertSuccessful()
@@ -64,7 +64,7 @@ open class Kapt3AndroidIT : Kapt3BaseIT() {
@Test @Test
fun testDagger() { fun testDagger() {
val project = Project("android-dagger", gradleVersion, directoryPrefix = "kapt2") val project = Project("android-dagger", directoryPrefix = "kapt2")
project.build("assembleDebug") { project.build("assembleDebug") {
assertSuccessful() assertSuccessful()
@@ -90,7 +90,7 @@ open class Kapt3AndroidIT : Kapt3BaseIT() {
@Test @Test
fun testKt15001() { fun testKt15001() {
val project = Project("kt15001", gradleVersion, directoryPrefix = "kapt2") val project = Project("kt15001", directoryPrefix = "kapt2")
project.build("assembleDebug") { project.build("assembleDebug") {
assertSuccessful() assertSuccessful()
@@ -100,7 +100,7 @@ open class Kapt3AndroidIT : Kapt3BaseIT() {
@Test @Test
fun testDbFlow() { fun testDbFlow() {
val project = Project("android-dbflow", gradleVersion, directoryPrefix = "kapt2") val project = Project("android-dbflow", directoryPrefix = "kapt2")
project.build("assembleDebug") { project.build("assembleDebug") {
assertSuccessful() assertSuccessful()
@@ -114,7 +114,7 @@ open class Kapt3AndroidIT : Kapt3BaseIT() {
@Test @Test
fun testRealm() { fun testRealm() {
val project = Project("android-realm", gradleVersion, directoryPrefix = "kapt2") val project = Project("android-realm", directoryPrefix = "kapt2")
project.build("assembleDebug") { project.build("assembleDebug") {
assertSuccessful() assertSuccessful()
@@ -128,7 +128,7 @@ open class Kapt3AndroidIT : Kapt3BaseIT() {
@Test @Test
open fun testDatabinding() { open fun testDatabinding() {
val project = Project("android-databinding", gradleVersion, directoryPrefix = "kapt2") val project = Project("android-databinding", directoryPrefix = "kapt2")
if (!isLegacyAndroidGradleVersion(androidGradlePluginVersion)) { if (!isLegacyAndroidGradleVersion(androidGradlePluginVersion)) {
project.setupWorkingDir() project.setupWorkingDir()