From 9a02fcc097f27ac0821cf8b155317c3c2b6447c2 Mon Sep 17 00:00:00 2001 From: seregamorph Date: Sun, 5 May 2024 20:10:05 +0200 Subject: [PATCH] #1114 print build path in projectHealth --- .../jvm/ProjectHealthSpec.groovy | 32 +++++++++++++++++++ .../autonomousapps/subplugin/ProjectPlugin.kt | 1 + .../autonomousapps/tasks/ProjectHealthTask.kt | 13 ++++++-- 3 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 src/functionalTest/groovy/com/autonomousapps/jvm/ProjectHealthSpec.groovy diff --git a/src/functionalTest/groovy/com/autonomousapps/jvm/ProjectHealthSpec.groovy b/src/functionalTest/groovy/com/autonomousapps/jvm/ProjectHealthSpec.groovy new file mode 100644 index 000000000..e4e789475 --- /dev/null +++ b/src/functionalTest/groovy/com/autonomousapps/jvm/ProjectHealthSpec.groovy @@ -0,0 +1,32 @@ +// Copyright (c) 2024. Tony Robalik. +// SPDX-License-Identifier: Apache-2.0 +package com.autonomousapps.jvm + +import com.autonomousapps.jvm.projects.AbiGenericsProject +import com.autonomousapps.jvm.projects.AbiGenericsProject.SourceKind + +import static com.autonomousapps.utils.Runner.build +import static com.google.common.truth.Truth.assertThat + +final class ProjectHealthSpec extends AbstractJvmSpec { + + def "projectHealth prints build file path (#gradleVersion)"() { + given: + def project = new AbiGenericsProject(SourceKind.METHOD) + gradleProject = project.gradleProject + + when: + def result = build(gradleVersion, gradleProject.rootDir, 'projectHealth') + + then: + assertThat(result.output).contains( + """${gradleProject.rootDir.getPath()}/proj/build.gradle + |Existing dependencies which should be modified to be as indicated: + | api project(':genericsBar') (was implementation) + | api project(':genericsFoo') (was implementation) + |""".stripMargin()) + + where: + gradleVersion << gradleVersions() + } +} diff --git a/src/main/kotlin/com/autonomousapps/subplugin/ProjectPlugin.kt b/src/main/kotlin/com/autonomousapps/subplugin/ProjectPlugin.kt index 23b842e3a..d9e64e8d0 100644 --- a/src/main/kotlin/com/autonomousapps/subplugin/ProjectPlugin.kt +++ b/src/main/kotlin/com/autonomousapps/subplugin/ProjectPlugin.kt @@ -931,6 +931,7 @@ internal class ProjectPlugin(private val project: Project) { } tasks.register("projectHealth") { + buildFilePath.set(project.buildFile.path) projectAdvice.set(filterAdviceTask.flatMap { it.output }) consoleReport.set(generateProjectHealthReport.flatMap { it.output }) } diff --git a/src/main/kotlin/com/autonomousapps/tasks/ProjectHealthTask.kt b/src/main/kotlin/com/autonomousapps/tasks/ProjectHealthTask.kt index c50dea1bd..0e1846916 100644 --- a/src/main/kotlin/com/autonomousapps/tasks/ProjectHealthTask.kt +++ b/src/main/kotlin/com/autonomousapps/tasks/ProjectHealthTask.kt @@ -8,6 +8,8 @@ import com.autonomousapps.internal.utils.fromJson import com.autonomousapps.model.ProjectAdvice import org.gradle.api.DefaultTask import org.gradle.api.file.RegularFileProperty +import org.gradle.api.provider.Property +import org.gradle.api.tasks.Input import org.gradle.api.tasks.InputFile import org.gradle.api.tasks.PathSensitive import org.gradle.api.tasks.PathSensitivity @@ -20,6 +22,9 @@ abstract class ProjectHealthTask : DefaultTask() { description = "Prints advice for this project" } + @get:Input + abstract val buildFilePath: Property + @get:PathSensitive(PathSensitivity.NONE) @get:InputFile abstract val projectAdvice: RegularFileProperty @@ -34,9 +39,13 @@ abstract class ProjectHealthTask : DefaultTask() { if (projectAdvice.shouldFail) { check(consoleReport.isNotBlank()) { "Console report should not be blank if projectHealth should fail" } - throw BuildHealthException(consoleReport) + throw BuildHealthException(prependBuildPath(consoleReport)) } else if (consoleReport.isNotBlank()) { - logger.quiet(consoleReport) + logger.quiet(prependBuildPath(consoleReport)) } } + + private fun prependBuildPath(consoleReport: String): String { + return "${buildFilePath.get()}\n$consoleReport" + } }