Add method to fetch from the project available models

^KT-45745 In Progress
This commit is contained in:
Yahor Berdnikau
2022-01-24 15:02:49 +01:00
parent da556452c9
commit e632189651
@@ -7,8 +7,11 @@ package org.jetbrains.kotlin.gradle.testbase
import org.gradle.testkit.runner.BuildResult
import org.gradle.testkit.runner.GradleRunner
import org.gradle.tooling.GradleConnector
import org.gradle.util.GradleVersion
import org.jetbrains.kotlin.gradle.BaseGradleIT.Companion.acceptAndroidSdkLicenses
import org.jetbrains.kotlin.gradle.model.ModelContainer
import org.jetbrains.kotlin.gradle.model.ModelFetcherBuildAction
import org.jetbrains.kotlin.test.util.KtTestUtil
import java.io.File
import java.nio.file.*
@@ -133,6 +136,34 @@ fun TestProject.buildAndFail(
}
internal inline fun <reified T> TestProject.getModels(
crossinline assertions: ModelContainer<T>.() -> Unit
) {
val allBuildArguments = commonBuildSetup(
emptyList(),
buildOptions,
false,
enableBuildScan,
gradleVersion
)
val connector = GradleConnector
.newConnector()
.useGradleUserHomeDir(testKitDir.toAbsolutePath().toFile())
.useGradleVersion(gradleVersion.version)
.forProjectDirectory(projectPath.toAbsolutePath().toFile())
connector.connect().use {
assertions(
it
.action(ModelFetcherBuildAction(T::class.java))
.withArguments(allBuildArguments)
.run()
)
}
}
fun TestProject.enableLocalBuildCache(
buildCacheLocation: Path
) {