Introduce tooling model for Android extensions plugin

Introduce Gradle models for plugins 'kotlin-android-extensions'.
This commit is contained in:
Lucas Smaira
2018-06-06 11:18:56 +01:00
committed by Sergey Igushkin
parent 5a423e8dcd
commit 3c88f761a6
8 changed files with 218 additions and 2 deletions
@@ -284,7 +284,9 @@ abstract class BaseGradleIT {
val connection = GradleConnector.newConnector().forProjectDirectory(projectDir).connect()
val options = defaultBuildOptions()
val model = connection.action(ModelFetcherBuildAction(modelType)) .withArguments("-Pkotlin_version=" + options.kotlinVersion).run()
val arguments = mutableListOf("-Pkotlin_version=${options.kotlinVersion}")
options.androidGradlePluginVersion?.let { arguments.add("-Pandroid_tools_version=$it") }
val model = connection.action(ModelFetcherBuildAction(modelType)).withArguments(arguments).run()
connection.close()
return model
}
@@ -0,0 +1,54 @@
/*
* 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.model
import org.jetbrains.kotlin.gradle.BaseGradleIT
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.junit.Test
import kotlin.test.assertEquals
import kotlin.test.assertFalse
import kotlin.test.assertNull
import kotlin.test.assertTrue
class KotlinAndroidExtensionIT : BaseGradleIT() {
override fun defaultBuildOptions(): BuildOptions {
return super.defaultBuildOptions().copy(
androidGradlePluginVersion = "3.0.0",
androidHome = KotlinTestUtils.findAndroidSdk()
)
}
@Test
fun testAndroidExtensionsProject() {
val project = Project("AndroidExtensionsProject")
val androidExtensionModel = project.getModels(KotlinAndroidExtension::class.java).getModel(":app")!!
assertEquals(1L, androidExtensionModel.modelVersion)
assertEquals("app", androidExtensionModel.name)
assertFalse(androidExtensionModel.isExperimental)
assertEquals("hashMap", androidExtensionModel.defaultCacheImplementation)
}
@Test
fun testAndroidExtensionsManyVariants() {
val project = Project("AndroidExtensionsManyVariants")
val androidExtensionModel = project.getModels(KotlinAndroidExtension::class.java).getModel(":app")!!
assertEquals(1L, androidExtensionModel.modelVersion)
assertEquals("app", androidExtensionModel.name)
assertTrue(androidExtensionModel.isExperimental)
assertEquals("hashMap", androidExtensionModel.defaultCacheImplementation)
}
@Test
fun testNonAndroidExtensionsProjects() {
val project = Project("kotlinProject")
val model = project.getModels(KotlinAndroidExtension::class.java).getModel(":")
assertNull(model)
}
}