[Gradle] Get rid of deprecated properties usage in KotlinTestReport
#KT-52490 Fixed
This commit is contained in:
committed by
Space Team
parent
b5482b3812
commit
2530dd836a
+5
@@ -151,6 +151,11 @@ abstract class DefaultKotlinBasePlugin : KotlinBasePlugin {
|
|||||||
MppTestReportHelper.MppTestReportHelperVariantFactory::class,
|
MppTestReportHelper.MppTestReportHelperVariantFactory::class,
|
||||||
DefaultMppTestReportHelperVariantFactory()
|
DefaultMppTestReportHelperVariantFactory()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
factories.putIfAbsent(
|
||||||
|
KotlinTestReportCompatibilityHelper.KotlinTestReportCompatibilityHelperVariantFactory::class,
|
||||||
|
DefaultKotlinTestReportCompatibilityHelperVariantFactory()
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
protected fun setupAttributeMatchingStrategy(
|
protected fun setupAttributeMatchingStrategy(
|
||||||
|
|||||||
+47
@@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* 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.plugin.internal
|
||||||
|
|
||||||
|
import org.gradle.api.file.DirectoryProperty
|
||||||
|
import org.gradle.api.model.ObjectFactory
|
||||||
|
import org.gradle.api.tasks.testing.AbstractTestTask
|
||||||
|
import org.gradle.api.tasks.testing.TestReport
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.VariantImplementationFactories
|
||||||
|
import org.jetbrains.kotlin.gradle.testing.internal.KotlinTestReport
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles the differences in the [TestReport] API introduced in Gradle 7.4
|
||||||
|
* See the [migration guide](https://docs.gradle.org/7.6/userguide/upgrading_version_7.html#replacement_methods_in_org_gradle_api_tasks_testing_testreport).
|
||||||
|
*/
|
||||||
|
interface KotlinTestReportCompatibilityHelper {
|
||||||
|
fun getDestinationDirectory(kotlinTestReport: KotlinTestReport): DirectoryProperty
|
||||||
|
|
||||||
|
fun setDestinationDirectory(kotlinTestReport: KotlinTestReport, directory: File)
|
||||||
|
|
||||||
|
fun addTestResultsFrom(kotlinTestReport: KotlinTestReport, task: AbstractTestTask)
|
||||||
|
|
||||||
|
interface KotlinTestReportCompatibilityHelperVariantFactory : VariantImplementationFactories.VariantImplementationFactory {
|
||||||
|
fun getInstance(objectFactory: ObjectFactory): KotlinTestReportCompatibilityHelper
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class DefaultKotlinTestReportCompatibilityHelperVariantFactory :
|
||||||
|
KotlinTestReportCompatibilityHelper.KotlinTestReportCompatibilityHelperVariantFactory {
|
||||||
|
override fun getInstance(objectFactory: ObjectFactory): KotlinTestReportCompatibilityHelper = DefaultKotlinTestReportCompatibilityHelper()
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class DefaultKotlinTestReportCompatibilityHelper : KotlinTestReportCompatibilityHelper {
|
||||||
|
override fun getDestinationDirectory(kotlinTestReport: KotlinTestReport): DirectoryProperty = kotlinTestReport.destinationDirectory
|
||||||
|
|
||||||
|
override fun setDestinationDirectory(kotlinTestReport: KotlinTestReport, directory: File) {
|
||||||
|
kotlinTestReport.destinationDirectory.fileValue(directory).finalizeValueOnRead()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun addTestResultsFrom(kotlinTestReport: KotlinTestReport, task: AbstractTestTask) {
|
||||||
|
kotlinTestReport.testResults.from(task.binaryResultsDirectory)
|
||||||
|
}
|
||||||
|
}
|
||||||
+16
-11
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.gradle.testing.internal
|
|||||||
|
|
||||||
import org.gradle.api.GradleException
|
import org.gradle.api.GradleException
|
||||||
import org.gradle.api.execution.TaskExecutionGraph
|
import org.gradle.api.execution.TaskExecutionGraph
|
||||||
|
import org.gradle.api.file.RegularFileProperty
|
||||||
import org.gradle.api.provider.Property
|
import org.gradle.api.provider.Property
|
||||||
import org.gradle.api.provider.Provider
|
import org.gradle.api.provider.Provider
|
||||||
import org.gradle.api.tasks.Input
|
import org.gradle.api.tasks.Input
|
||||||
@@ -16,10 +17,10 @@ import org.gradle.api.tasks.TaskProvider
|
|||||||
import org.gradle.api.tasks.testing.*
|
import org.gradle.api.tasks.testing.*
|
||||||
import org.jetbrains.kotlin.gradle.internal.testing.KotlinTestRunnerListener
|
import org.jetbrains.kotlin.gradle.internal.testing.KotlinTestRunnerListener
|
||||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
|
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.internal.KotlinTestReportCompatibilityHelper
|
||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinTest
|
import org.jetbrains.kotlin.gradle.tasks.KotlinTest
|
||||||
import org.jetbrains.kotlin.gradle.utils.appendLine
|
import org.jetbrains.kotlin.gradle.utils.appendLine
|
||||||
import java.io.File
|
import org.jetbrains.kotlin.gradle.utils.toUri
|
||||||
import java.net.URI
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Aggregates tests reports for kotlin test tasks added by [registerTestTask].
|
* Aggregates tests reports for kotlin test tasks added by [registerTestTask].
|
||||||
@@ -77,6 +78,9 @@ abstract class KotlinTestReport : TestReport() {
|
|||||||
private val hasFailedTests: Boolean
|
private val hasFailedTests: Boolean
|
||||||
get() = testReportService.hasFailedTests(path)
|
get() = testReportService.hasFailedTests(path)
|
||||||
|
|
||||||
|
@get:Internal
|
||||||
|
internal abstract val testReportCompatibilityHelper: Property<KotlinTestReportCompatibilityHelper>
|
||||||
|
|
||||||
private fun computeAllParentTasksPaths(): List<String> {
|
private fun computeAllParentTasksPaths(): List<String> {
|
||||||
val allParents = mutableListOf<String>()
|
val allParents = mutableListOf<String>()
|
||||||
var cur: KotlinTestReport? = this
|
var cur: KotlinTestReport? = this
|
||||||
@@ -130,15 +134,17 @@ abstract class KotlinTestReport : TestReport() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun reportOn(task: AbstractTestTask) {
|
private fun reportOn(task: AbstractTestTask) {
|
||||||
reportOn(task.binaryResultsDirectory)
|
testReportCompatibilityHelper.get().addTestResultsFrom(this, task)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@get:Internal
|
||||||
|
abstract val htmlReportFile: RegularFileProperty
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
@Deprecated("Use `htmlReportFile` instead", ReplaceWith("htmlReportFile"))
|
||||||
|
@get:Internal
|
||||||
open val htmlReportUrl: String?
|
open val htmlReportUrl: String?
|
||||||
@Internal get() = destinationDir?.let { asClickableFileUrl(it.resolve("index.html")) }
|
get() = htmlReportFile.orNull?.toUri().toString()
|
||||||
|
|
||||||
private fun asClickableFileUrl(path: File): String {
|
|
||||||
return URI("file", "", path.toURI().path, null, null).toString()
|
|
||||||
}
|
|
||||||
|
|
||||||
@TaskAction
|
@TaskAction
|
||||||
fun checkFailedTests() {
|
fun checkFailedTests() {
|
||||||
@@ -157,9 +163,8 @@ abstract class KotlinTestReport : TestReport() {
|
|||||||
private fun getFailingTestsMessage(): String {
|
private fun getFailingTestsMessage(): String {
|
||||||
val message = StringBuilder("There were failing tests.")
|
val message = StringBuilder("There were failing tests.")
|
||||||
|
|
||||||
val reportUrl = htmlReportUrl
|
if (htmlReportFile.isPresent) {
|
||||||
if (reportUrl != null) {
|
message.append(" See the report at: ${htmlReportFile.get().toUri()}")
|
||||||
message.append(" See the report at: $reportUrl")
|
|
||||||
}
|
}
|
||||||
return message.toString()
|
return message.toString()
|
||||||
}
|
}
|
||||||
|
|||||||
+9
-1
@@ -13,6 +13,8 @@ import org.gradle.api.tasks.TaskProvider
|
|||||||
import org.gradle.api.tasks.testing.AbstractTestTask
|
import org.gradle.api.tasks.testing.AbstractTestTask
|
||||||
import org.gradle.language.base.plugins.LifecycleBasePlugin
|
import org.gradle.language.base.plugins.LifecycleBasePlugin
|
||||||
import org.jetbrains.kotlin.gradle.logging.kotlinInfo
|
import org.jetbrains.kotlin.gradle.logging.kotlinInfo
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.internal.KotlinTestReportCompatibilityHelper
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.variantImplementationFactory
|
||||||
import org.jetbrains.kotlin.gradle.tasks.dependsOn
|
import org.jetbrains.kotlin.gradle.tasks.dependsOn
|
||||||
import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask
|
import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask
|
||||||
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
||||||
@@ -85,15 +87,21 @@ class KotlinTestsRegistry(val project: Project, val allTestsTaskName: String = "
|
|||||||
aggregate.description = description
|
aggregate.description = description
|
||||||
aggregate.group = JavaBasePlugin.VERIFICATION_GROUP
|
aggregate.group = JavaBasePlugin.VERIFICATION_GROUP
|
||||||
|
|
||||||
aggregate.destinationDir = project.testReportsDir.resolve(reportName)
|
val compatibilityHelper = project.gradle
|
||||||
|
.variantImplementationFactory<KotlinTestReportCompatibilityHelper.KotlinTestReportCompatibilityHelperVariantFactory>()
|
||||||
|
.getInstance(project.objects)
|
||||||
|
|
||||||
|
compatibilityHelper.setDestinationDirectory(aggregate, project.testReportsDir.resolve(reportName))
|
||||||
|
|
||||||
val isIdeaActive = project.readSystemPropertyAtConfigurationTime("idea.active").isPresent
|
val isIdeaActive = project.readSystemPropertyAtConfigurationTime("idea.active").isPresent
|
||||||
|
|
||||||
if (isIdeaActive) {
|
if (isIdeaActive) {
|
||||||
aggregate.extensions.extraProperties.set("idea.internal.test", true)
|
aggregate.extensions.extraProperties.set("idea.internal.test", true)
|
||||||
}
|
}
|
||||||
|
aggregate.htmlReportFile.value(compatibilityHelper.getDestinationDirectory(aggregate).file("index.html")).disallowChanges()
|
||||||
aggregate.usesService(testReportService)
|
aggregate.usesService(testReportService)
|
||||||
aggregate.testReportServiceProvider.value(testReportService).finalizeValueOnRead()
|
aggregate.testReportServiceProvider.value(testReportService).finalizeValueOnRead()
|
||||||
|
aggregate.testReportCompatibilityHelper.value(compatibilityHelper).finalizeValueOnRead()
|
||||||
|
|
||||||
project.gradle.taskGraph.whenReady { graph ->
|
project.gradle.taskGraph.whenReady { graph ->
|
||||||
aggregate.maybeOverrideReporting(graph)
|
aggregate.maybeOverrideReporting(graph)
|
||||||
|
|||||||
+3
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.gradle.utils
|
package org.jetbrains.kotlin.gradle.utils
|
||||||
|
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.api.file.RegularFile
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import java.nio.file.Files
|
import java.nio.file.Files
|
||||||
@@ -114,3 +115,5 @@ fun contentEquals(file1: File, file2: File): Boolean {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal fun RegularFile.toUri() = asFile.toPath().toUri()
|
||||||
+2
@@ -147,4 +147,6 @@ private fun Project.registerVariantImplementations() {
|
|||||||
ConfigurationTimePropertiesAccessorG70.ConfigurationTimePropertiesAccessorVariantFactoryG70()
|
ConfigurationTimePropertiesAccessorG70.ConfigurationTimePropertiesAccessorVariantFactoryG70()
|
||||||
factories[MppTestReportHelper.MppTestReportHelperVariantFactory::class] =
|
factories[MppTestReportHelper.MppTestReportHelperVariantFactory::class] =
|
||||||
MppTestReportHelperG70.MppTestReportHelperVariantFactoryG70()
|
MppTestReportHelperG70.MppTestReportHelperVariantFactoryG70()
|
||||||
|
factories[KotlinTestReportCompatibilityHelper.KotlinTestReportCompatibilityHelperVariantFactory::class] =
|
||||||
|
KotlinTestReportCompatibilityHelperG70.KotlinTestReportCompatibilityHelperVariantFactoryG70()
|
||||||
}
|
}
|
||||||
|
|||||||
+33
@@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* 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.plugin.internal
|
||||||
|
|
||||||
|
import org.gradle.api.file.DirectoryProperty
|
||||||
|
import org.gradle.api.model.ObjectFactory
|
||||||
|
import org.gradle.api.tasks.testing.AbstractTestTask
|
||||||
|
import org.jetbrains.kotlin.gradle.testing.internal.KotlinTestReport
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
internal class KotlinTestReportCompatibilityHelperG70(
|
||||||
|
private val objectFactory: ObjectFactory
|
||||||
|
) : KotlinTestReportCompatibilityHelper {
|
||||||
|
override fun getDestinationDirectory(kotlinTestReport: KotlinTestReport): DirectoryProperty =
|
||||||
|
objectFactory.directoryProperty().fileValue(kotlinTestReport.destinationDir)
|
||||||
|
|
||||||
|
override fun setDestinationDirectory(kotlinTestReport: KotlinTestReport, directory: File) {
|
||||||
|
kotlinTestReport.destinationDir = directory
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun addTestResultsFrom(kotlinTestReport: KotlinTestReport, task: AbstractTestTask) {
|
||||||
|
kotlinTestReport.reportOn(task.binaryResultsDirectory)
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class KotlinTestReportCompatibilityHelperVariantFactoryG70 :
|
||||||
|
KotlinTestReportCompatibilityHelper.KotlinTestReportCompatibilityHelperVariantFactory {
|
||||||
|
override fun getInstance(objectFactory: ObjectFactory): KotlinTestReportCompatibilityHelper =
|
||||||
|
KotlinTestReportCompatibilityHelperG70(objectFactory)
|
||||||
|
}
|
||||||
|
}
|
||||||
+2
@@ -148,4 +148,6 @@ private fun Project.registerVariantImplementations() {
|
|||||||
ConfigurationTimePropertiesAccessorG71.ConfigurationTimePropertiesAccessorVariantFactoryG71()
|
ConfigurationTimePropertiesAccessorG71.ConfigurationTimePropertiesAccessorVariantFactoryG71()
|
||||||
factories[MppTestReportHelper.MppTestReportHelperVariantFactory::class] =
|
factories[MppTestReportHelper.MppTestReportHelperVariantFactory::class] =
|
||||||
MppTestReportHelperG71.MppTestReportHelperVariantFactoryG71()
|
MppTestReportHelperG71.MppTestReportHelperVariantFactoryG71()
|
||||||
|
factories[KotlinTestReportCompatibilityHelper.KotlinTestReportCompatibilityHelperVariantFactory::class] =
|
||||||
|
KotlinTestReportCompatibilityHelperG71.KotlinTestReportCompatibilityHelperVariantFactoryG71()
|
||||||
}
|
}
|
||||||
|
|||||||
+33
@@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* 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.plugin.internal
|
||||||
|
|
||||||
|
import org.gradle.api.file.DirectoryProperty
|
||||||
|
import org.gradle.api.model.ObjectFactory
|
||||||
|
import org.gradle.api.tasks.testing.AbstractTestTask
|
||||||
|
import org.jetbrains.kotlin.gradle.testing.internal.KotlinTestReport
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
internal class KotlinTestReportCompatibilityHelperG71(
|
||||||
|
private val objectFactory: ObjectFactory
|
||||||
|
) : KotlinTestReportCompatibilityHelper {
|
||||||
|
override fun getDestinationDirectory(kotlinTestReport: KotlinTestReport): DirectoryProperty =
|
||||||
|
objectFactory.directoryProperty().fileValue(kotlinTestReport.destinationDir)
|
||||||
|
|
||||||
|
override fun setDestinationDirectory(kotlinTestReport: KotlinTestReport, directory: File) {
|
||||||
|
kotlinTestReport.destinationDir = directory
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun addTestResultsFrom(kotlinTestReport: KotlinTestReport, task: AbstractTestTask) {
|
||||||
|
kotlinTestReport.reportOn(task.binaryResultsDirectory)
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class KotlinTestReportCompatibilityHelperVariantFactoryG71 :
|
||||||
|
KotlinTestReportCompatibilityHelper.KotlinTestReportCompatibilityHelperVariantFactory {
|
||||||
|
override fun getInstance(objectFactory: ObjectFactory): KotlinTestReportCompatibilityHelper =
|
||||||
|
KotlinTestReportCompatibilityHelperG71(objectFactory)
|
||||||
|
}
|
||||||
|
}
|
||||||
+2
@@ -153,4 +153,6 @@ private fun Project.registerVariantImplementations() {
|
|||||||
ConfigurationTimePropertiesAccessorG6.ConfigurationTimePropertiesAccessorVariantFactoryG6()
|
ConfigurationTimePropertiesAccessorG6.ConfigurationTimePropertiesAccessorVariantFactoryG6()
|
||||||
factories[MppTestReportHelper.MppTestReportHelperVariantFactory::class] =
|
factories[MppTestReportHelper.MppTestReportHelperVariantFactory::class] =
|
||||||
MppTestReportHelperG6.MppTestReportHelperVariantFactoryG6()
|
MppTestReportHelperG6.MppTestReportHelperVariantFactoryG6()
|
||||||
|
factories[KotlinTestReportCompatibilityHelper.KotlinTestReportCompatibilityHelperVariantFactory::class] =
|
||||||
|
KotlinTestReportCompatibilityHelperG6.KotlinTestReportCompatibilityHelperVariantFactoryG6()
|
||||||
}
|
}
|
||||||
+33
@@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* 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.plugin.internal
|
||||||
|
|
||||||
|
import org.gradle.api.file.DirectoryProperty
|
||||||
|
import org.gradle.api.model.ObjectFactory
|
||||||
|
import org.gradle.api.tasks.testing.AbstractTestTask
|
||||||
|
import org.jetbrains.kotlin.gradle.testing.internal.KotlinTestReport
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
internal class KotlinTestReportCompatibilityHelperG6(
|
||||||
|
private val objectFactory: ObjectFactory
|
||||||
|
) : KotlinTestReportCompatibilityHelper {
|
||||||
|
override fun getDestinationDirectory(kotlinTestReport: KotlinTestReport): DirectoryProperty =
|
||||||
|
objectFactory.directoryProperty().fileValue(kotlinTestReport.destinationDir)
|
||||||
|
|
||||||
|
override fun setDestinationDirectory(kotlinTestReport: KotlinTestReport, directory: File) {
|
||||||
|
kotlinTestReport.destinationDir = directory
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun addTestResultsFrom(kotlinTestReport: KotlinTestReport, task: AbstractTestTask) {
|
||||||
|
kotlinTestReport.reportOn(task.binaryResultsDirectory)
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class KotlinTestReportCompatibilityHelperVariantFactoryG6 :
|
||||||
|
KotlinTestReportCompatibilityHelper.KotlinTestReportCompatibilityHelperVariantFactory {
|
||||||
|
override fun getInstance(objectFactory: ObjectFactory): KotlinTestReportCompatibilityHelper =
|
||||||
|
KotlinTestReportCompatibilityHelperG6(objectFactory)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user