Use Task.doNotTrackState api
This api is faster replacement for 'task.outputs.upToDateWhen { false }'
approach.
^KT-52624 Fixed
This commit is contained in:
@@ -47,7 +47,7 @@ open class AggregateTest : Test() { // Inherit from Test to see test results in
|
||||
}
|
||||
|
||||
private fun subTaskConfigure(testTask: Test) {
|
||||
testTask.outputs.upToDateWhen { false }
|
||||
testTask.doNotTrackState("State is tracked by AggregateTest task")
|
||||
testTask.ignoreFailures = true
|
||||
testTask.filter {
|
||||
isFailOnNoMatchingTests = false
|
||||
|
||||
+4
-2
@@ -1218,7 +1218,8 @@ abstract class AbstractKotlin2JsGradlePluginIT(protected val irBackend: Boolean)
|
||||
|
|
||||
|allprojects {
|
||||
| tasks.configureEach {
|
||||
| if (this is org.gradle.configuration.Help) return@configureEach
|
||||
| if (name == org.gradle.language.base.plugins.LifecycleBasePlugin.CLEAN_TASK_NAME ||
|
||||
| this is org.gradle.configuration.Help) return@configureEach
|
||||
| throw GradleException("Task ${'$'}{path} shouldn't be configured")
|
||||
| }
|
||||
|}
|
||||
@@ -1237,7 +1238,8 @@ abstract class AbstractKotlin2JsGradlePluginIT(protected val irBackend: Boolean)
|
||||
|
|
||||
|allprojects {
|
||||
| tasks.configureEach {
|
||||
| if (it instanceof org.gradle.configuration.Help) return
|
||||
| if (it.name == org.gradle.language.base.plugins.LifecycleBasePlugin.CLEAN_TASK_NAME ||
|
||||
| it instanceof org.gradle.configuration.Help) return
|
||||
| throw new GradleException("Task ${'$'}{path} shouldn't be configured")
|
||||
| }
|
||||
|}
|
||||
|
||||
+2
-3
@@ -13,11 +13,10 @@ import org.gradle.api.tasks.TaskAction
|
||||
import org.gradle.api.tasks.TaskProvider
|
||||
import org.jetbrains.kotlin.gradle.dsl.pm20Extension
|
||||
import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask
|
||||
import org.jetbrains.kotlin.gradle.utils.doNotTrackStateCompat
|
||||
import org.jetbrains.kotlin.kpm.idea.proto.writeTo
|
||||
import java.io.ByteArrayOutputStream
|
||||
import java.io.ObjectOutputStream
|
||||
import kotlin.time.ExperimentalTime
|
||||
import kotlin.time.measureTime
|
||||
|
||||
internal fun Project.locateOrRegisterIdeaKpmBuildProjectModelTask(): TaskProvider<IdeaKpmBuildProjectModelTask> {
|
||||
return locateOrRegisterTask(IdeaKpmBuildProjectModelTask.defaultTaskName)
|
||||
@@ -34,7 +33,7 @@ internal open class IdeaKpmBuildProjectModelTask : DefaultTask() {
|
||||
private val builder = project.pm20Extension.ideaKpmProjectModelBuilder
|
||||
|
||||
init {
|
||||
outputs.upToDateWhen { false }
|
||||
doNotTrackStateCompat("Should always re-run to produce updated models")
|
||||
}
|
||||
|
||||
@TaskAction
|
||||
|
||||
+2
-1
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig.Mode
|
||||
import org.jetbrains.kotlin.gradle.targets.js.webpack.WebpackDevtool
|
||||
import org.jetbrains.kotlin.gradle.targets.js.webpack.WebpackMajorVersion.Companion.choose
|
||||
import org.jetbrains.kotlin.gradle.tasks.dependsOn
|
||||
import org.jetbrains.kotlin.gradle.utils.doNotTrackStateCompat
|
||||
import org.jetbrains.kotlin.gradle.utils.newFileProperty
|
||||
import java.io.File
|
||||
import javax.inject.Inject
|
||||
@@ -152,7 +153,7 @@ abstract class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
|
||||
)()
|
||||
|
||||
|
||||
task.outputs.upToDateWhen { false }
|
||||
task.doNotTrackStateCompat("Tracked by external webpack tool")
|
||||
|
||||
task.commonConfigure(
|
||||
compilation = compilation,
|
||||
|
||||
+2
-1
@@ -32,6 +32,7 @@ import org.jetbrains.kotlin.gradle.targets.js.webpack.WebpackDevtool
|
||||
import org.jetbrains.kotlin.gradle.targets.js.webpack.WebpackMajorVersion.Companion.choose
|
||||
import org.jetbrains.kotlin.gradle.tasks.dependsOn
|
||||
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
||||
import org.jetbrains.kotlin.gradle.utils.doNotTrackStateCompat
|
||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||
import java.io.File
|
||||
import javax.inject.Inject
|
||||
@@ -175,7 +176,7 @@ abstract class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
|
||||
}
|
||||
)()
|
||||
|
||||
task.outputs.upToDateWhen { false }
|
||||
task.doNotTrackStateCompat("Tracked by external webpack tool")
|
||||
|
||||
task.commonConfigure(
|
||||
compilation = compilation,
|
||||
|
||||
+2
-1
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.gradle.targets.js.addWasmExperimentalArguments
|
||||
import org.jetbrains.kotlin.gradle.targets.js.d8.D8RootPlugin
|
||||
import org.jetbrains.kotlin.gradle.targets.js.internal.parseNodeJsStackTraceAsJvm
|
||||
import org.jetbrains.kotlin.gradle.targets.js.writeWasmUnitTestRunner
|
||||
import org.jetbrains.kotlin.gradle.utils.doNotTrackStateCompat
|
||||
import org.jetbrains.kotlin.gradle.utils.getValue
|
||||
|
||||
internal class KotlinWasmD8(private val kotlinJsTest: KotlinJsTest) : KotlinJsTestFramework {
|
||||
@@ -30,7 +31,7 @@ internal class KotlinWasmD8(private val kotlinJsTest: KotlinJsTest) : KotlinJsTe
|
||||
private val isTeamCity = project.providers.gradleProperty(TCServiceMessagesTestExecutor.TC_PROJECT_PROPERTY)
|
||||
|
||||
init {
|
||||
kotlinJsTest.outputs.upToDateWhen { false }
|
||||
kotlinJsTest.doNotTrackStateCompat("Should always re-run for WASM")
|
||||
}
|
||||
|
||||
override fun createTestExecutionSpec(
|
||||
|
||||
+2
-1
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.gradle.targets.js.RequiredKotlinJsDependency
|
||||
import org.jetbrains.kotlin.gradle.targets.js.addWasmExperimentalArguments
|
||||
import org.jetbrains.kotlin.gradle.targets.js.internal.parseNodeJsStackTraceAsJvm
|
||||
import org.jetbrains.kotlin.gradle.targets.js.writeWasmUnitTestRunner
|
||||
import org.jetbrains.kotlin.gradle.utils.doNotTrackStateCompat
|
||||
|
||||
internal class KotlinWasmNode(private val kotlinJsTest: KotlinJsTest) : KotlinJsTestFramework {
|
||||
override val settingsState: String = "KotlinWasmNode"
|
||||
@@ -22,7 +23,7 @@ internal class KotlinWasmNode(private val kotlinJsTest: KotlinJsTest) : KotlinJs
|
||||
private val isTeamCity = compilation.target.project.providers.gradleProperty(TCServiceMessagesTestExecutor.TC_PROJECT_PROPERTY)
|
||||
|
||||
init {
|
||||
kotlinJsTest.outputs.upToDateWhen { false }
|
||||
kotlinJsTest.doNotTrackStateCompat("Should always re-run for WASM")
|
||||
}
|
||||
|
||||
override fun createTestExecutionSpec(
|
||||
|
||||
+14
@@ -18,6 +18,7 @@ package org.jetbrains.kotlin.gradle.utils
|
||||
|
||||
import org.gradle.api.GradleException
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.Task
|
||||
import org.gradle.api.file.ArchiveOperations
|
||||
import org.gradle.api.file.CopySpec
|
||||
import org.gradle.api.file.FileSystemOperations
|
||||
@@ -99,3 +100,16 @@ internal interface LegacyTestDescriptorInternal : TestDescriptor {
|
||||
|
||||
fun getClassDisplayName(): String?
|
||||
}
|
||||
|
||||
/**
|
||||
* According to [Gradle 7.3 release notes](https://docs.gradle.org/7.3/release-notes.html#allow-plugin-authors-to-declare-tasks-as-untracked)
|
||||
* [Task.doNotTrackState] is a better replacement for `Task.outputs.upToDateWhen { false }`
|
||||
*/
|
||||
internal fun Task.doNotTrackStateCompat(because: String) {
|
||||
if (GradleVersion.current() < GradleVersion.version("7.3")) {
|
||||
logger.info("Not UP-TO-DATE because $because")
|
||||
outputs.upToDateWhen { false }
|
||||
} else {
|
||||
doNotTrackState(because)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user