[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,
|
||||
DefaultMppTestReportHelperVariantFactory()
|
||||
)
|
||||
|
||||
factories.putIfAbsent(
|
||||
KotlinTestReportCompatibilityHelper.KotlinTestReportCompatibilityHelperVariantFactory::class,
|
||||
DefaultKotlinTestReportCompatibilityHelperVariantFactory()
|
||||
)
|
||||
}
|
||||
|
||||
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.execution.TaskExecutionGraph
|
||||
import org.gradle.api.file.RegularFileProperty
|
||||
import org.gradle.api.provider.Property
|
||||
import org.gradle.api.provider.Provider
|
||||
import org.gradle.api.tasks.Input
|
||||
@@ -16,10 +17,10 @@ import org.gradle.api.tasks.TaskProvider
|
||||
import org.gradle.api.tasks.testing.*
|
||||
import org.jetbrains.kotlin.gradle.internal.testing.KotlinTestRunnerListener
|
||||
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.utils.appendLine
|
||||
import java.io.File
|
||||
import java.net.URI
|
||||
import org.jetbrains.kotlin.gradle.utils.toUri
|
||||
|
||||
/**
|
||||
* Aggregates tests reports for kotlin test tasks added by [registerTestTask].
|
||||
@@ -77,6 +78,9 @@ abstract class KotlinTestReport : TestReport() {
|
||||
private val hasFailedTests: Boolean
|
||||
get() = testReportService.hasFailedTests(path)
|
||||
|
||||
@get:Internal
|
||||
internal abstract val testReportCompatibilityHelper: Property<KotlinTestReportCompatibilityHelper>
|
||||
|
||||
private fun computeAllParentTasksPaths(): List<String> {
|
||||
val allParents = mutableListOf<String>()
|
||||
var cur: KotlinTestReport? = this
|
||||
@@ -130,15 +134,17 @@ abstract class KotlinTestReport : TestReport() {
|
||||
}
|
||||
|
||||
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?
|
||||
@Internal get() = destinationDir?.let { asClickableFileUrl(it.resolve("index.html")) }
|
||||
|
||||
private fun asClickableFileUrl(path: File): String {
|
||||
return URI("file", "", path.toURI().path, null, null).toString()
|
||||
}
|
||||
get() = htmlReportFile.orNull?.toUri().toString()
|
||||
|
||||
@TaskAction
|
||||
fun checkFailedTests() {
|
||||
@@ -157,9 +163,8 @@ abstract class KotlinTestReport : TestReport() {
|
||||
private fun getFailingTestsMessage(): String {
|
||||
val message = StringBuilder("There were failing tests.")
|
||||
|
||||
val reportUrl = htmlReportUrl
|
||||
if (reportUrl != null) {
|
||||
message.append(" See the report at: $reportUrl")
|
||||
if (htmlReportFile.isPresent) {
|
||||
message.append(" See the report at: ${htmlReportFile.get().toUri()}")
|
||||
}
|
||||
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.language.base.plugins.LifecycleBasePlugin
|
||||
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.locateOrRegisterTask
|
||||
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
||||
@@ -85,15 +87,21 @@ class KotlinTestsRegistry(val project: Project, val allTestsTaskName: String = "
|
||||
aggregate.description = description
|
||||
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
|
||||
|
||||
if (isIdeaActive) {
|
||||
aggregate.extensions.extraProperties.set("idea.internal.test", true)
|
||||
}
|
||||
aggregate.htmlReportFile.value(compatibilityHelper.getDestinationDirectory(aggregate).file("index.html")).disallowChanges()
|
||||
aggregate.usesService(testReportService)
|
||||
aggregate.testReportServiceProvider.value(testReportService).finalizeValueOnRead()
|
||||
aggregate.testReportCompatibilityHelper.value(compatibilityHelper).finalizeValueOnRead()
|
||||
|
||||
project.gradle.taskGraph.whenReady { graph ->
|
||||
aggregate.maybeOverrideReporting(graph)
|
||||
|
||||
+3
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.gradle.utils
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.file.RegularFile
|
||||
import java.io.File
|
||||
import java.io.IOException
|
||||
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()
|
||||
factories[MppTestReportHelper.MppTestReportHelperVariantFactory::class] =
|
||||
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()
|
||||
factories[MppTestReportHelper.MppTestReportHelperVariantFactory::class] =
|
||||
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()
|
||||
factories[MppTestReportHelper.MppTestReportHelperVariantFactory::class] =
|
||||
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