Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'master' into hotfix/JLLeitschuhgh-557
Browse files Browse the repository at this point in the history
rbleuse authored Jan 8, 2022
2 parents 9bd9943 + b72dc05 commit de9714b
Showing 13 changed files with 82 additions and 134 deletions.
Original file line number Diff line number Diff line change
@@ -20,7 +20,7 @@ internal const val KTLINT_BASELINE_REPORTER_CONFIGURATION_NAME = "ktlintBaseline
internal const val KTLINT_BASELINE_REPORTER_CONFIGURATION_DESCRIPTION =
"Provides KtLint baseline reporter required to generate baseline file"

internal fun createKtlintConfiguration(target: Project, extension: KtlintExtension) =
internal fun createKtlintConfiguration(target: Project, extension: KtlintExtension): Configuration =
target.configurations.maybeCreate(KTLINT_CONFIGURATION_NAME).apply {
// Configurations in resolved state are not allowed to modify dependencies
if (state != Configuration.State.UNRESOLVED) return@apply
@@ -48,8 +48,8 @@ private fun resolveGroup(ktlintVersion: String) = when {
internal fun createKtlintRulesetConfiguration(
target: Project,
ktLintConfiguration: Configuration
) =
target.configurations.maybeCreate(KTLINT_RULESET_CONFIGURATION_NAME).apply {
): Configuration = target
.configurations.maybeCreate(KTLINT_RULESET_CONFIGURATION_NAME).apply {
description = KTLINT_RULESET_CONFIGURATION_DESCRIPTION
ensureConsistencyWith(target, ktLintConfiguration)
}
@@ -58,7 +58,7 @@ internal fun createKtLintReporterConfiguration(
target: Project,
extension: KtlintExtension,
ktLintConfiguration: Configuration
) = target
): Configuration = target
.configurations
.maybeCreate(KTLINT_REPORTER_CONFIGURATION_NAME)
.apply {
@@ -87,7 +87,7 @@ internal fun createKtLintBaselineReporterConfiguration(
target: Project,
extension: KtlintExtension,
ktLintConfiguration: Configuration
) = target
): Configuration = target
.configurations
.maybeCreate(KTLINT_BASELINE_REPORTER_CONFIGURATION_NAME)
.apply {
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@ package org.jlleitschuh.gradle.ktlint
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.Task
import org.gradle.api.artifacts.Configuration
import org.gradle.api.tasks.TaskProvider
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension
@@ -150,23 +151,23 @@ open class KtlintPlugin : Plugin<Project> {
val extension = target.plugins.apply(KtlintBasePlugin::class.java).extension

val metaKtlintCheckTask: TaskProvider<Task> by lazy {
target.registerTask<Task>(CHECK_PARENT_TASK_NAME) {
target.registerTask(CHECK_PARENT_TASK_NAME) {
group = VERIFICATION_GROUP
description = "Runs ktlint on all kotlin sources in this project."
}
}

val metaKtlintFormatTask: TaskProvider<Task> by lazy {
target.registerTask<Task>(FORMAT_PARENT_TASK_NAME) {
target.registerTask(FORMAT_PARENT_TASK_NAME) {
group = FORMATTING_GROUP
description = "Runs the ktlint formatter on all kotlin sources in this project."
}
}

val ktlintConfiguration = createKtlintConfiguration(target, extension)
val ktlintRulesetConfiguration = createKtlintRulesetConfiguration(target, ktlintConfiguration)
val ktlintReporterConfiguration = createKtLintReporterConfiguration(target, extension, ktlintConfiguration)
val ktlintBaselineReporterConfiguration = createKtLintBaselineReporterConfiguration(
val ktlintConfiguration: Configuration = createKtlintConfiguration(target, extension)
val ktlintRulesetConfiguration: Configuration = createKtlintRulesetConfiguration(target, ktlintConfiguration)
val ktlintReporterConfiguration: Configuration = createKtLintReporterConfiguration(target, extension, ktlintConfiguration)
val ktlintBaselineReporterConfiguration: Configuration = createKtLintBaselineReporterConfiguration(
target,
extension,
ktlintConfiguration
Original file line number Diff line number Diff line change
@@ -95,13 +95,13 @@ internal val INTERMEDIATE_RESULTS_PATH = "intermediates${File.separator}ktLint${

internal inline fun <reified T> ObjectFactory.property(
configuration: Property<T>.() -> Unit = {}
) = property(T::class.java).apply(configuration)
): Property<T> = property(T::class.java).apply(configuration)

internal inline fun <reified T> ObjectFactory.setProperty(
configuration: SetProperty<T>.() -> Unit = {}
) = setProperty(T::class.java).apply(configuration)
): SetProperty<T> = setProperty(T::class.java).apply(configuration)

internal fun Project.isConsolePlain() = gradle.startParameter.consoleOutput == ConsoleOutput.Plain
internal fun Project.isConsolePlain(): Boolean = gradle.startParameter.consoleOutput == ConsoleOutput.Plain

/**
* Get file path where tasks could put their intermediate results, that could be consumed by other plugin tasks.
Original file line number Diff line number Diff line change
@@ -29,18 +29,16 @@ internal abstract class GenerateBaselineWorkAction :
.discoveredErrors
.files
.filter { it.exists() }
.map {
ktLintClassesSerializer.loadErrors(it)
}
.map(ktLintClassesSerializer::loadErrors)
.flatten()

val baselineFile = parameters.baselineFile.asFile.get().apply {
if (exists()) delete() else parentFile.mkdirs()
}
val projectDir = parameters.projectDirectory.asFile.get()

PrintStream(baselineFile.outputStream()).use {
val baselineReporter = loadBaselineReporter(it)
PrintStream(baselineFile.outputStream()).use { file ->
val baselineReporter = loadBaselineReporter(file)
baselineReporter.beforeAll()
errors.forEach { lintErrorResult ->
val filePath = lintErrorResult
Original file line number Diff line number Diff line change
@@ -4,11 +4,7 @@ import com.pinterest.ktlint.core.LintError
import com.pinterest.ktlint.core.ReporterProvider
import net.swiftzer.semver.SemVer
import org.apache.commons.io.serialization.ValidatingObjectInputStream
import java.io.BufferedInputStream
import java.io.BufferedOutputStream
import java.io.File
import java.io.FileInputStream
import java.io.FileOutputStream
import java.io.ObjectInputStream
import java.io.ObjectOutputStream
import java.io.Serializable
@@ -49,44 +45,31 @@ private class CurrentKtLintClassesSerializer : KtLintClassesSerializer {
override fun saveErrors(
lintErrors: List<LintErrorResult>,
serializedErrors: File
) = ObjectOutputStream(
BufferedOutputStream(
FileOutputStream(
serializedErrors
)
)
).use {
) = ObjectOutputStream(serializedErrors.outputStream().buffered()).use {
it.writeObject(lintErrors)
}

override fun loadErrors(serializedErrors: File): List<LintErrorResult> = ValidatingObjectInputStream(
BufferedInputStream(
FileInputStream(serializedErrors)
serializedErrors.inputStream().buffered()
).use {
it.accept(
ArrayList::class.java,
LintErrorResult::class.java,
File::class.java,
Pair::class.java,
LintError::class.java,
java.lang.Boolean::class.java
)
)
.use {
it.accept(
ArrayList::class.java,
LintErrorResult::class.java,
File::class.java,
Pair::class.java,
LintError::class.java,
java.lang.Boolean::class.java
)
it.accept("kotlin.Pair")
@Suppress("UNCHECKED_CAST")
it.readObject() as List<LintErrorResult>
}
it.accept("kotlin.Pair")
@Suppress("UNCHECKED_CAST")
it.readObject() as List<LintErrorResult>
}

override fun saveReporterProviders(
reporterProviders: List<ReporterProvider>,
serializedReporterProviders: File
) = ObjectOutputStream(
BufferedOutputStream(
FileOutputStream(
serializedReporterProviders
)
)
serializedReporterProviders.outputStream().buffered()
).use { oos ->
oos.writeObject(
reporterProviders
@@ -96,14 +79,11 @@ private class CurrentKtLintClassesSerializer : KtLintClassesSerializer {
override fun loadReporterProviders(
serializedReporterProviders: File
): List<ReporterProvider> = ObjectInputStream(
BufferedInputStream(
FileInputStream(serializedReporterProviders)
)
)
.use {
@Suppress("UNCHECKED_CAST")
it.readObject() as List<ReporterProvider>
}
serializedReporterProviders.inputStream().buffered()
).use {
@Suppress("UNCHECKED_CAST")
it.readObject() as List<ReporterProvider>
}
}

/**
@@ -114,45 +94,34 @@ private class OldKtLintClassesSerializer : KtLintClassesSerializer {
lintErrors: List<LintErrorResult>,
serializedErrors: File
) = ObjectOutputStream(
BufferedOutputStream(
FileOutputStream(
serializedErrors
)
)
serializedErrors.outputStream().buffered()
).use {
it.writeObject(lintErrors.map(LintErrorResultCompat::from))
}

override fun loadErrors(
serializedErrors: File
): List<LintErrorResult> = ValidatingObjectInputStream(
BufferedInputStream(
FileInputStream(serializedErrors)
serializedErrors.inputStream().buffered()
).use {
it.accept(
ArrayList::class.java,
LintErrorResultCompat::class.java,
File::class.java,
Pair::class.java,
SerializableLintError::class.java,
java.lang.Boolean::class.java
)
)
.use {
it.accept(
ArrayList::class.java,
LintErrorResultCompat::class.java,
File::class.java,
Pair::class.java,
SerializableLintError::class.java,
java.lang.Boolean::class.java
)
it.accept("kotlin.Pair")
@Suppress("UNCHECKED_CAST")
(it.readObject() as List<LintErrorResultCompat>).map(LintErrorResultCompat::to)
}
it.accept("kotlin.Pair")
@Suppress("UNCHECKED_CAST")
(it.readObject() as List<LintErrorResultCompat>).map(LintErrorResultCompat::to)
}

override fun saveReporterProviders(
reporterProviders: List<ReporterProvider>,
serializedReporterProviders: File
) = ObjectOutputStream(
BufferedOutputStream(
FileOutputStream(
serializedReporterProviders
)
)
serializedReporterProviders.outputStream().buffered()
).use { oos ->
oos.writeObject(
reporterProviders.map(::SerializableReporterProvider)
@@ -162,19 +131,15 @@ private class OldKtLintClassesSerializer : KtLintClassesSerializer {
override fun loadReporterProviders(
serializedReporterProviders: File
): List<ReporterProvider> = ValidatingObjectInputStream(
BufferedInputStream(
FileInputStream(serializedReporterProviders)
serializedReporterProviders.inputStream().buffered()
).use {
it.accept(
ArrayList::class.java,
SerializableReporterProvider::class.java
)
)
.use {
it.accept(
ArrayList::class.java,
SerializableReporterProvider::class.java
)
@Suppress("UNCHECKED_CAST")
it.readObject() as List<SerializableReporterProvider>
}
.map { it.reporterProvider }
@Suppress("UNCHECKED_CAST")
it.readObject() as List<SerializableReporterProvider>
}.map { it.reporterProvider }

private data class LintErrorResultCompat(
val lintedFile: File,
@@ -184,6 +149,7 @@ private class OldKtLintClassesSerializer : KtLintClassesSerializer {
lintedFile,
lintErrors.map { Pair(it.first.lintError, it.second) }
)

companion object {
fun from(
lintError: LintErrorResult
Original file line number Diff line number Diff line change
@@ -16,11 +16,7 @@ import org.gradle.api.provider.SetProperty
import org.gradle.workers.WorkAction
import org.gradle.workers.WorkParameters
import org.jlleitschuh.gradle.ktlint.worker.KtLintWorkAction.FormatTaskSnapshot.Companion.contentHash
import java.io.BufferedInputStream
import java.io.BufferedOutputStream
import java.io.File
import java.io.FileInputStream
import java.io.FileOutputStream
import java.io.ObjectInputStream
import java.io.ObjectOutputStream
import java.io.Serializable
@@ -173,21 +169,21 @@ abstract class KtLintWorkAction : WorkAction<KtLintWorkAction.KtLintWorkParamete
private const val serialVersionUID = 1L

fun readFromFile(snapshotFile: File) =
ObjectInputStream(BufferedInputStream(FileInputStream(snapshotFile)))
ObjectInputStream(snapshotFile.inputStream().buffered())
.use {
it.readObject() as FormatTaskSnapshot
}

fun writeIntoFile(
snapshotFile: File,
formatSnapshot: FormatTaskSnapshot
) = ObjectOutputStream(BufferedOutputStream(FileOutputStream(snapshotFile)))
) = ObjectOutputStream(snapshotFile.outputStream().buffered())
.use {
it.writeObject(formatSnapshot)
}

fun contentHash(file: File): ByteArray {
return MessageDigestCalculatingInputStream(BufferedInputStream(FileInputStream(file))).use {
return MessageDigestCalculatingInputStream(file.inputStream().buffered()).use {
it.readBytes()
it.messageDigest.digest()
}
Original file line number Diff line number Diff line change
@@ -12,8 +12,6 @@ import org.gradle.workers.WorkParameters
import org.jlleitschuh.gradle.ktlint.logKtLintDebugMessage
import org.jlleitschuh.gradle.ktlint.reporter.CustomReporter
import org.jlleitschuh.gradle.ktlint.reporter.ReporterType
import java.io.BufferedOutputStream
import java.io.FileOutputStream
import java.io.ObjectOutputStream
import java.io.Serializable
import java.util.ServiceLoader
@@ -36,11 +34,7 @@ internal abstract class LoadReportersWorkAction : WorkAction<LoadReportersWorkAc
)

ObjectOutputStream(
BufferedOutputStream(
FileOutputStream(
parameters.loadedReporters.asFile.get()
)
)
parameters.loadedReporters.asFile.get().outputStream().buffered()
).use { oos ->
oos.writeObject(
loadedReporters.map { it.first }
Original file line number Diff line number Diff line change
@@ -45,15 +45,11 @@ internal class SerializableLintError(
)
}

override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false

other as SerializableLintError

if (lintError != other.lintError) return false

return true
override fun equals(other: Any?): Boolean = when {
this === other -> true
javaClass != other?.javaClass -> false
lintError != (other as SerializableLintError).lintError -> false
else -> true
}

override fun hashCode(): Int {
Original file line number Diff line number Diff line change
@@ -147,7 +147,7 @@ class GitHookTasksTest : AbstractPluginTest() {
build(":$INSTALL_GIT_HOOK_CHECK_TASK") {
assertThat(task(":$INSTALL_GIT_HOOK_CHECK_TASK")?.outcome).isEqualTo(TaskOutcome.SUCCESS)
assertThat(gitDir.preCommitGitHook()).exists()
assertThat(gitDir.preCommitGitHook().canExecute()).isTrue()
assertThat(gitDir.preCommitGitHook().canExecute()).isTrue
assertThat(gitDir.preCommitGitHook().readText()).contains(CHECK_PARENT_TASK_NAME)
}
}
Original file line number Diff line number Diff line change
@@ -5,8 +5,6 @@ import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.io.TempDir
import java.io.File
import java.io.FileInputStream
import java.io.FileOutputStream
import java.io.ObjectInputStream
import java.io.ObjectOutputStream

@@ -22,11 +20,11 @@ internal class SerializableLintErrorTest {
val wrappedLintError = SerializableLintError(lintError)
val serializeIntoFile = temporaryFolder.resolve("lintError.test")

ObjectOutputStream(FileOutputStream(serializeIntoFile)).use {
ObjectOutputStream(serializeIntoFile.outputStream()).use {
it.writeObject(wrappedLintError)
}

ObjectInputStream(FileInputStream(serializeIntoFile)).use {
ObjectInputStream(serializeIntoFile.inputStream()).use {
val restoredWrappedLintError = it.readObject() as SerializableLintError
assertThat(restoredWrappedLintError.lintError).isEqualTo(lintError)
assertThat(restoredWrappedLintError.lintError.canBeAutoCorrected)
Original file line number Diff line number Diff line change
@@ -6,8 +6,6 @@ import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.io.TempDir
import java.io.File
import java.io.FileInputStream
import java.io.FileOutputStream
import java.io.ObjectInputStream
import java.io.ObjectOutputStream
import java.io.PrintStream
@@ -22,11 +20,11 @@ internal class SerializableReporterProviderTest {
val wrappedReporterProvider = SerializableReporterProvider(reporterProvider)
val serializeIntoFile = temporaryFolder.resolve("reporters.test")

ObjectOutputStream(FileOutputStream(serializeIntoFile)).use {
ObjectOutputStream(serializeIntoFile.outputStream()).use {
it.writeObject(wrappedReporterProvider)
}

ObjectInputStream(FileInputStream(serializeIntoFile)).use {
ObjectInputStream(serializeIntoFile.inputStream()).use {
val restoredWrappedReporterProvider = it.readObject() as SerializableReporterProvider
assertThat(restoredWrappedReporterProvider.reporterProvider).isInstanceOf(TestReporterProvider::class.java)
assertThat(restoredWrappedReporterProvider.reporterProvider.id)
Original file line number Diff line number Diff line change
@@ -32,17 +32,17 @@ object DummyContent {

private fun addItem(item: DummyItem) {
ITEMS.add(item)
ITEM_MAP.put(item.id, item)
ITEM_MAP[item.id] = item
}

private fun createDummyItem(position: Int): DummyItem {
return DummyItem(position.toString(), "Item " + position, makeDetails(position))
return DummyItem(position.toString(), "Item $position", makeDetails(position))
}

private fun makeDetails(position: Int): String {
val builder = StringBuilder()
builder.append("Details about Item: ").append(position)
for (i in 0..position - 1) {
for (i in 0 until position) {
builder.append("\nMore details information here.")
}
return builder.toString()
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.jlleitschuh.gradle.ktlint.sample.js

import kotlin.browser.document
import kotlinx.browser.document
import org.w3c.dom.Node

val secondDiv: dynamic = document.createElement("div").apply {
innerHTML = "<h1>Hello second time!</h1>"
@@ -11,5 +12,5 @@ fun main() {
val firstDiv = document.createElement("div").apply { innerHTML = "<h1>Hello!</h1>" }
document.body?.appendChild(firstDiv)

document.body?.appendChild(secondDiv)
document.body?.appendChild(secondDiv as Node)
}

0 comments on commit de9714b

Please sign in to comment.