[Gradle, JS] Remove fail after build option
^KT-53381 fixed
This commit is contained in:
+14
-40
@@ -17,9 +17,9 @@ import org.jetbrains.kotlin.gradle.targets.js.npm.NpmProject
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmProjectModules
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.PackageJson
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.fromSrcPackageJson
|
||||
import org.jetbrains.kotlin.gradle.targets.js.yarn.YARN_LOCK_MISMATCH_MESSAGE
|
||||
import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnLockCopyTask.Companion.STORE_YARN_LOCK_NAME
|
||||
import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnLockCopyTask.Companion.UPGRADE_YARN_LOCK
|
||||
import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnLockCopyTask.Companion.YARN_LOCK_MISMATCH_MESSAGE
|
||||
import org.jetbrains.kotlin.gradle.tasks.USING_JS_INCREMENTAL_COMPILATION_MESSAGE
|
||||
import org.jetbrains.kotlin.gradle.tasks.USING_JS_IR_BACKEND_MESSAGE
|
||||
import org.jetbrains.kotlin.gradle.testbase.*
|
||||
@@ -1420,26 +1420,7 @@ abstract class AbstractKotlin2JsGradlePluginIT(protected val irBackend: Boolean)
|
||||
}
|
||||
|
||||
buildGradleKts.modify {
|
||||
val replaced = it.replace("implementation(npm(\"decamelize\", \"6.0.0\"))", "")
|
||||
replaced + "\n" +
|
||||
"""
|
||||
rootProject.plugins.withType(org.jetbrains.kotlin.gradle.targets.js.yarn.YarnPlugin::class.java) {
|
||||
rootProject.the<org.jetbrains.kotlin.gradle.targets.js.yarn.YarnRootExtension>().yarnLockMismatchReport =
|
||||
org.jetbrains.kotlin.gradle.targets.js.yarn.YarnLockMismatchReport.FAIL_AFTER_BUILD
|
||||
}
|
||||
""".trimIndent()
|
||||
}
|
||||
|
||||
buildAndFail("compileKotlinJs") {
|
||||
assertTasksExecuted(":$STORE_YARN_LOCK_NAME")
|
||||
|
||||
assertOutputContains(YARN_LOCK_MISMATCH_MESSAGE)
|
||||
}
|
||||
|
||||
buildAndFail("compileKotlinJs") {
|
||||
assertTasksUpToDate(":$STORE_YARN_LOCK_NAME")
|
||||
|
||||
assertOutputContains(YARN_LOCK_MISMATCH_MESSAGE)
|
||||
it.replace("implementation(npm(\"decamelize\", \"6.0.0\"))", "")
|
||||
}
|
||||
|
||||
projectPath.resolve("kotlin-js-store").deleteRecursively()
|
||||
@@ -1488,25 +1469,7 @@ abstract class AbstractKotlin2JsGradlePluginIT(protected val irBackend: Boolean)
|
||||
}
|
||||
|
||||
buildGradleKts.modify {
|
||||
val replaced = it.replace("implementation(npm(\"decamelize\", \"6.0.0\"))", "")
|
||||
replaced + "\n" +
|
||||
"""
|
||||
rootProject.plugins.withType(org.jetbrains.kotlin.gradle.targets.js.yarn.YarnPlugin::class.java) {
|
||||
rootProject.the<org.jetbrains.kotlin.gradle.targets.js.yarn.YarnRootExtension>().yarnLockMismatchReport =
|
||||
org.jetbrains.kotlin.gradle.targets.js.yarn.YarnLockMismatchReport.FAIL_AFTER_BUILD
|
||||
}
|
||||
""".trimIndent()
|
||||
}
|
||||
|
||||
buildAndFail("compileKotlinJs") {
|
||||
assertTasksExecuted(":$STORE_YARN_LOCK_NAME")
|
||||
|
||||
assertOutputContains(YARN_LOCK_MISMATCH_MESSAGE)
|
||||
}
|
||||
|
||||
//yarn.lock was updated
|
||||
build("compileKotlinJs") {
|
||||
assertTasksUpToDate(":$STORE_YARN_LOCK_NAME")
|
||||
it.replace("implementation(npm(\"decamelize\", \"6.0.0\"))", "")
|
||||
}
|
||||
|
||||
// check if everything ok without build/js/yarn.lock
|
||||
@@ -1517,6 +1480,17 @@ abstract class AbstractKotlin2JsGradlePluginIT(protected val irBackend: Boolean)
|
||||
build("clean") {
|
||||
assertTasksUpToDate(":clean")
|
||||
}
|
||||
|
||||
buildAndFail("compileKotlinJs") {
|
||||
assertTasksFailed(":$STORE_YARN_LOCK_NAME")
|
||||
}
|
||||
|
||||
projectPath.resolve("kotlin-js-store").deleteRecursively()
|
||||
|
||||
//check if independent tasks can be executed
|
||||
build("help") {
|
||||
assertTasksExecuted(":help")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-6
@@ -50,13 +50,11 @@ abstract class YarnLockCopyTask : DefaultTask() {
|
||||
val STORE_YARN_LOCK_NAME = "kotlinStoreYarnLock"
|
||||
val RESTORE_YARN_LOCK_NAME = "kotlinRestoreYarnLock"
|
||||
val UPGRADE_YARN_LOCK = "kotlinUpgradeYarnLock"
|
||||
val YARN_LOCK_MISMATCH_MESSAGE = "yarn.lock was changed. Run the `${YarnLockCopyTask.UPGRADE_YARN_LOCK}` task to actualize yarn.lock file"
|
||||
}
|
||||
}
|
||||
|
||||
abstract class YarnLockStoreTask : YarnLockCopyTask() {
|
||||
@get:Internal
|
||||
abstract val yarnLockMismatchReportService: Property<YarnLockMismatchReportService>
|
||||
|
||||
@Input
|
||||
lateinit var yarnLockMismatchReport: Provider<YarnLockMismatchReport>
|
||||
|
||||
@@ -86,9 +84,6 @@ abstract class YarnLockStoreTask : YarnLockCopyTask() {
|
||||
logger.warn(YARN_LOCK_MISMATCH_MESSAGE)
|
||||
}
|
||||
YarnLockMismatchReport.FAIL -> throw GradleException(YARN_LOCK_MISMATCH_MESSAGE)
|
||||
YarnLockMismatchReport.FAIL_AFTER_BUILD -> {
|
||||
yarnLockMismatchReportService.get().failOnClose()
|
||||
}
|
||||
else -> error("Unknown yarn.lock mismatch report kind")
|
||||
}
|
||||
}
|
||||
|
||||
-53
@@ -1,53 +0,0 @@
|
||||
/*
|
||||
* 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.targets.js.yarn
|
||||
|
||||
import org.gradle.api.GradleException
|
||||
import org.gradle.api.file.RegularFileProperty
|
||||
import org.gradle.api.provider.Property
|
||||
import org.gradle.api.services.BuildService
|
||||
import org.gradle.api.services.BuildServiceParameters
|
||||
import org.gradle.tooling.events.FinishEvent
|
||||
import org.gradle.tooling.events.OperationCompletionListener
|
||||
import org.jetbrains.kotlin.gradle.utils.contentEquals
|
||||
|
||||
abstract class YarnLockMismatchReportService : BuildService<YarnLockMismatchReportService.Params>, AutoCloseable,
|
||||
OperationCompletionListener {
|
||||
@Volatile
|
||||
private var shouldFailOnClose: Boolean = false
|
||||
|
||||
// Some parameters for the web server
|
||||
internal interface Params : BuildServiceParameters {
|
||||
val inputFile: RegularFileProperty
|
||||
val outputFile: RegularFileProperty
|
||||
val shouldFailOnClose: Property<Boolean>
|
||||
val reportNewYarnLock: Property<Boolean>
|
||||
}
|
||||
|
||||
fun failOnClose() {
|
||||
shouldFailOnClose = true
|
||||
}
|
||||
|
||||
override fun onFinish(event: FinishEvent?) {
|
||||
// noop
|
||||
}
|
||||
|
||||
override fun close() {
|
||||
if (!parameters.inputFile.get().asFile.exists()) {
|
||||
return
|
||||
}
|
||||
|
||||
if (parameters.reportNewYarnLock.get() && !parameters.outputFile.get().asFile.exists()) {
|
||||
throw GradleException(YARN_LOCK_MISMATCH_MESSAGE)
|
||||
}
|
||||
|
||||
if (shouldFailOnClose || parameters.shouldFailOnClose.get() && !contentEquals(parameters.inputFile.get().asFile, parameters.outputFile.get().asFile)) {
|
||||
throw GradleException(YARN_LOCK_MISMATCH_MESSAGE)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
val YARN_LOCK_MISMATCH_MESSAGE = "yarn.lock was changed. Run the `${YarnLockCopyTask.UPGRADE_YARN_LOCK}` task to actualize yarn.lock file"
|
||||
-17
@@ -73,29 +73,12 @@ open class YarnPlugin : Plugin<Project> {
|
||||
it.dependsOn(packageJsonUmbrella)
|
||||
}
|
||||
|
||||
val service = project.gradle.sharedServices
|
||||
.registerIfAbsent("kotlin-store-yarn-lock-mismatch-reporter", YarnLockMismatchReportService::class.java) {
|
||||
it.parameters.inputFile.set(nodeJs.rootPackageDir.resolve("yarn.lock"))
|
||||
it.parameters.outputFile.set(yarnRootExtension.lockFileDirectory.resolve(yarnRootExtension.lockFileName))
|
||||
it.parameters.shouldFailOnClose.set(
|
||||
provider { yarnRootExtension.requireConfigured().yarnLockMismatchReport == YarnLockMismatchReport.FAIL_AFTER_BUILD }
|
||||
)
|
||||
it.parameters.reportNewYarnLock.set(
|
||||
provider { yarnRootExtension.requireConfigured().reportNewYarnLock }
|
||||
)
|
||||
}
|
||||
|
||||
BuildEventsListenerRegistryHolder.getInstance(project).listenerRegistry
|
||||
.onTaskCompletion(service)
|
||||
|
||||
val storeYarnLock = tasks.register(STORE_YARN_LOCK_NAME, YarnLockStoreTask::class.java) { task ->
|
||||
task.dependsOn(kotlinNpmInstall)
|
||||
task.inputFile.set(nodeJs.rootPackageDir.resolve("yarn.lock"))
|
||||
task.outputDirectory.set(yarnRootExtension.lockFileDirectory)
|
||||
task.fileName.set(yarnRootExtension.lockFileName)
|
||||
|
||||
task.yarnLockMismatchReportService.set(service)
|
||||
|
||||
task.yarnLockMismatchReport = provider { yarnRootExtension.requireConfigured().yarnLockMismatchReport }
|
||||
task.reportNewYarnLock = provider { yarnRootExtension.requireConfigured().reportNewYarnLock }
|
||||
task.yarnLockAutoReplace = provider { yarnRootExtension.requireConfigured().yarnLockAutoReplace }
|
||||
|
||||
Reference in New Issue
Block a user