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) {
|
private fun subTaskConfigure(testTask: Test) {
|
||||||
testTask.outputs.upToDateWhen { false }
|
testTask.doNotTrackState("State is tracked by AggregateTest task")
|
||||||
testTask.ignoreFailures = true
|
testTask.ignoreFailures = true
|
||||||
testTask.filter {
|
testTask.filter {
|
||||||
isFailOnNoMatchingTests = false
|
isFailOnNoMatchingTests = false
|
||||||
|
|||||||
+4
-2
@@ -1218,7 +1218,8 @@ abstract class AbstractKotlin2JsGradlePluginIT(protected val irBackend: Boolean)
|
|||||||
|
|
|
|
||||||
|allprojects {
|
|allprojects {
|
||||||
| tasks.configureEach {
|
| 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")
|
| throw GradleException("Task ${'$'}{path} shouldn't be configured")
|
||||||
| }
|
| }
|
||||||
|}
|
|}
|
||||||
@@ -1237,7 +1238,8 @@ abstract class AbstractKotlin2JsGradlePluginIT(protected val irBackend: Boolean)
|
|||||||
|
|
|
|
||||||
|allprojects {
|
|allprojects {
|
||||||
| tasks.configureEach {
|
| 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")
|
| 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.gradle.api.tasks.TaskProvider
|
||||||
import org.jetbrains.kotlin.gradle.dsl.pm20Extension
|
import org.jetbrains.kotlin.gradle.dsl.pm20Extension
|
||||||
import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask
|
import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.doNotTrackStateCompat
|
||||||
import org.jetbrains.kotlin.kpm.idea.proto.writeTo
|
import org.jetbrains.kotlin.kpm.idea.proto.writeTo
|
||||||
import java.io.ByteArrayOutputStream
|
import java.io.ByteArrayOutputStream
|
||||||
import java.io.ObjectOutputStream
|
import java.io.ObjectOutputStream
|
||||||
import kotlin.time.ExperimentalTime
|
|
||||||
import kotlin.time.measureTime
|
|
||||||
|
|
||||||
internal fun Project.locateOrRegisterIdeaKpmBuildProjectModelTask(): TaskProvider<IdeaKpmBuildProjectModelTask> {
|
internal fun Project.locateOrRegisterIdeaKpmBuildProjectModelTask(): TaskProvider<IdeaKpmBuildProjectModelTask> {
|
||||||
return locateOrRegisterTask(IdeaKpmBuildProjectModelTask.defaultTaskName)
|
return locateOrRegisterTask(IdeaKpmBuildProjectModelTask.defaultTaskName)
|
||||||
@@ -34,7 +33,7 @@ internal open class IdeaKpmBuildProjectModelTask : DefaultTask() {
|
|||||||
private val builder = project.pm20Extension.ideaKpmProjectModelBuilder
|
private val builder = project.pm20Extension.ideaKpmProjectModelBuilder
|
||||||
|
|
||||||
init {
|
init {
|
||||||
outputs.upToDateWhen { false }
|
doNotTrackStateCompat("Should always re-run to produce updated models")
|
||||||
}
|
}
|
||||||
|
|
||||||
@TaskAction
|
@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.WebpackDevtool
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.webpack.WebpackMajorVersion.Companion.choose
|
import org.jetbrains.kotlin.gradle.targets.js.webpack.WebpackMajorVersion.Companion.choose
|
||||||
import org.jetbrains.kotlin.gradle.tasks.dependsOn
|
import org.jetbrains.kotlin.gradle.tasks.dependsOn
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.doNotTrackStateCompat
|
||||||
import org.jetbrains.kotlin.gradle.utils.newFileProperty
|
import org.jetbrains.kotlin.gradle.utils.newFileProperty
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import javax.inject.Inject
|
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(
|
task.commonConfigure(
|
||||||
compilation = compilation,
|
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.targets.js.webpack.WebpackMajorVersion.Companion.choose
|
||||||
import org.jetbrains.kotlin.gradle.tasks.dependsOn
|
import org.jetbrains.kotlin.gradle.tasks.dependsOn
|
||||||
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.doNotTrackStateCompat
|
||||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import javax.inject.Inject
|
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(
|
task.commonConfigure(
|
||||||
compilation = compilation,
|
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.d8.D8RootPlugin
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.internal.parseNodeJsStackTraceAsJvm
|
import org.jetbrains.kotlin.gradle.targets.js.internal.parseNodeJsStackTraceAsJvm
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.writeWasmUnitTestRunner
|
import org.jetbrains.kotlin.gradle.targets.js.writeWasmUnitTestRunner
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.doNotTrackStateCompat
|
||||||
import org.jetbrains.kotlin.gradle.utils.getValue
|
import org.jetbrains.kotlin.gradle.utils.getValue
|
||||||
|
|
||||||
internal class KotlinWasmD8(private val kotlinJsTest: KotlinJsTest) : KotlinJsTestFramework {
|
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)
|
private val isTeamCity = project.providers.gradleProperty(TCServiceMessagesTestExecutor.TC_PROJECT_PROPERTY)
|
||||||
|
|
||||||
init {
|
init {
|
||||||
kotlinJsTest.outputs.upToDateWhen { false }
|
kotlinJsTest.doNotTrackStateCompat("Should always re-run for WASM")
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun createTestExecutionSpec(
|
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.addWasmExperimentalArguments
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.internal.parseNodeJsStackTraceAsJvm
|
import org.jetbrains.kotlin.gradle.targets.js.internal.parseNodeJsStackTraceAsJvm
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.writeWasmUnitTestRunner
|
import org.jetbrains.kotlin.gradle.targets.js.writeWasmUnitTestRunner
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.doNotTrackStateCompat
|
||||||
|
|
||||||
internal class KotlinWasmNode(private val kotlinJsTest: KotlinJsTest) : KotlinJsTestFramework {
|
internal class KotlinWasmNode(private val kotlinJsTest: KotlinJsTest) : KotlinJsTestFramework {
|
||||||
override val settingsState: String = "KotlinWasmNode"
|
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)
|
private val isTeamCity = compilation.target.project.providers.gradleProperty(TCServiceMessagesTestExecutor.TC_PROJECT_PROPERTY)
|
||||||
|
|
||||||
init {
|
init {
|
||||||
kotlinJsTest.outputs.upToDateWhen { false }
|
kotlinJsTest.doNotTrackStateCompat("Should always re-run for WASM")
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun createTestExecutionSpec(
|
override fun createTestExecutionSpec(
|
||||||
|
|||||||
+14
@@ -18,6 +18,7 @@ package org.jetbrains.kotlin.gradle.utils
|
|||||||
|
|
||||||
import org.gradle.api.GradleException
|
import org.gradle.api.GradleException
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.api.Task
|
||||||
import org.gradle.api.file.ArchiveOperations
|
import org.gradle.api.file.ArchiveOperations
|
||||||
import org.gradle.api.file.CopySpec
|
import org.gradle.api.file.CopySpec
|
||||||
import org.gradle.api.file.FileSystemOperations
|
import org.gradle.api.file.FileSystemOperations
|
||||||
@@ -99,3 +100,16 @@ internal interface LegacyTestDescriptorInternal : TestDescriptor {
|
|||||||
|
|
||||||
fun getClassDisplayName(): String?
|
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