Skip to content

Commit

Permalink
test against newest kotlin, gradle, ktlint, and AGP versions
Browse files Browse the repository at this point in the history
drop testing for gradle 7.4 and 7.5 because they cause our tests with kotlin 2.x to fail, but the plugin will still work in those gradle versions if kotlin 1.x is being used

Update CHANGELOG.md

Co-authored-by: Jonathan Leitschuh <[email protected]>
  • Loading branch information
wakingrufus and JLLeitschuh committed Feb 24, 2025
1 parent d10a065 commit c90d987
Show file tree
Hide file tree
Showing 10 changed files with 35 additions and 29 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/).
## [Unreleased]

- Update Gradle wrapper and Gradle versions for testing. [#819](https://github.com/JLLeitschuh/ktlint-gradle/pull/819)
- Test against newest kotlin, gradle, ktlint, and AGP versions [#833](https://github.com/JLLeitschuh/ktlint-gradle/pull/833). Drop testing for gradle 7.4 and 7.5 because they cause our tests with kotlin 2.x to fail, but the plugin will still work in those gradle versions if kotlin 1.x is being used

## [12.1.2] - 2024-11-25

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ open class KtlintBasePlugin : Plugin<Project> {

override fun apply(target: Project) {
target.checkMinimalSupportedGradleVersion()

val filterTargetApplier: FilterApplier = {
target.tasks.withType(BaseKtLintCheckTask::class.java).configureEach(it)
}
Expand Down Expand Up @@ -54,6 +53,10 @@ open class KtlintBasePlugin : Plugin<Project> {
)
}

companion object {
const val LOWEST_SUPPORTED_GRADLE_VERSION = "7.4.2"
}

/**
* @deprecated Now that we declare gradle API metadata, this code should not be needed.
* Ee need to check which version of gradle introduced gradle API metadata checking
Expand All @@ -66,8 +69,4 @@ open class KtlintBasePlugin : Plugin<Project> {
)
}
}

companion object {
const val LOWEST_SUPPORTED_GRADLE_VERSION = "7.4.2"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@ import java.io.File
*/
@GradleTestVersions
class KotlinJsPluginTests : AbstractPluginTest() {
private fun jsProjectSetup(gradleVersion: GradleVersion): (File) -> Unit = {
projectSetup("js", gradleVersion).invoke(it)
private fun jsProjectSetup(): (File) -> Unit = {
projectSetup("js").invoke(it)

//language=Groovy
it.resolve("build.gradle").appendText(
"""
kotlin {
js(IR) {
nodejs()
Expand All @@ -37,7 +37,7 @@ class KotlinJsPluginTests : AbstractPluginTest() {
@DisplayName("Should add check tasks")
@CommonTest
fun addCheckTasks(gradleVersion: GradleVersion) {
project(gradleVersion, projectSetup = jsProjectSetup(gradleVersion)) {
project(gradleVersion, projectSetup = jsProjectSetup()) {
build("-m", CHECK_PARENT_TASK_NAME) {
val ktlintTasks = output.lineSequence().toList()

Expand All @@ -59,7 +59,7 @@ class KotlinJsPluginTests : AbstractPluginTest() {
@DisplayName("Should add format tasks")
@CommonTest
fun addFormatTasks(gradleVersion: GradleVersion) {
project(gradleVersion, projectSetup = jsProjectSetup(gradleVersion)) {
project(gradleVersion, projectSetup = jsProjectSetup()) {
build("-m", FORMAT_PARENT_TASK_NAME) {
val ktlintTasks = output.lineSequence().toList()

Expand All @@ -81,7 +81,7 @@ class KotlinJsPluginTests : AbstractPluginTest() {
@DisplayName("Should fail check task on un-formatted sources")
@CommonTest
fun failOnStyleViolation(gradleVersion: GradleVersion) {
project(gradleVersion, projectSetup = jsProjectSetup(gradleVersion)) {
project(gradleVersion, projectSetup = jsProjectSetup()) {
withFailingSources()

buildAndFail(CHECK_PARENT_TASK_NAME) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ import java.io.File
*/
@GradleTestVersions
class KotlinMultiplatformPluginTests : AbstractPluginTest() {
private fun multiplatformProjectSetup(gradleVersion: GradleVersion): (File) -> Unit = {
projectSetup("multiplatform", gradleVersion).invoke(it)
private fun multiplatformProjectSetup(): (File) -> Unit = {
projectSetup("multiplatform").invoke(it)

//language=Groovy
it.resolve("build.gradle").appendText(
Expand All @@ -36,7 +36,7 @@ class KotlinMultiplatformPluginTests : AbstractPluginTest() {
@DisplayName("Should add check on all sources")
@CommonTest
fun addCheckTasks(gradleVersion: GradleVersion) {
project(gradleVersion, projectSetup = multiplatformProjectSetup(gradleVersion)) {
project(gradleVersion, projectSetup = multiplatformProjectSetup()) {
build("-m", CHECK_PARENT_TASK_NAME) {
val ktlintTasks = output.lineSequence().toList()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,10 @@ class KtLintSupportedVersionsTest : AbstractPluginTest() {
"0.50.0",
"1.0.1",
"1.1.1",
"1.2.1"
"1.2.1",
"1.3.1",
"1.4.1",
"1.5.0"
)

override fun provideArguments(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -713,7 +713,7 @@ class KtlintPluginTest : AbstractPluginTest() {
@CommonTest
fun checkAdditionalSources(gradleVersion: GradleVersion) {
fun projectSetup(file: File) {
projectSetup("jvm", gradleVersion).invoke(file)
projectSetup("jvm").invoke(file)

//language=Groovy
file.resolve("build.gradle").appendText(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package org.jlleitschuh.gradle.ktlint


import org.assertj.core.api.Assertions.assertThat
import org.gradle.util.GradleVersion
import org.jlleitschuh.gradle.ktlint.testdsl.buildAndFail
import org.jlleitschuh.gradle.ktlint.testdsl.getMajorJavaVersion
import org.jlleitschuh.gradle.ktlint.testdsl.project
import org.jlleitschuh.gradle.ktlint.testdsl.projectSetup
import org.junit.jupiter.api.Assumptions
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.Test
Expand All @@ -24,7 +26,10 @@ class UnsupportedGradleTest : AbstractPluginTest() {
*/
Assumptions.assumeFalse(getMajorJavaVersion() >= 21)

project(GradleVersion.version("7.4.1")) {
project(
gradleVersion = GradleVersion.version("7.4.1"),
projectSetup = projectSetup("jvm", "1.9.22")
) {
buildAndFail(CHECK_PARENT_TASK_NAME) {
assertThat(output).contains(
"Current version of plugin supports minimal Gradle version: " +
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,9 +80,8 @@ class KtlintPluginAndroidTest : AbstractPluginTest() {
"0.47.1",
maximumJava = 17
),
GRADLE_7_5_AGP_7_4(
// AGP 7.4 requires Gradle 7.5
GradleVersion.version("7.5"),
AGP_7_4(
GradleVersion.version(TestVersions.minSupportedGradleVersion),
"7.4.2",
// AGP 4.1 requires kotlin 1.5.20
"1.5.20",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@ import kotlin.streams.asStream

@Suppress("ConstPropertyName")
object TestVersions {
const val minSupportedGradleVersion = KtlintBasePlugin.LOWEST_SUPPORTED_GRADLE_VERSION
const val maxSupportedGradleVersion = "8.11.1"
const val minSupportedGradleVersion = "7.6.3" // lowest version for testing
const val maxSupportedGradleVersion = "8.12.1"
val pluginVersion = File("VERSION_CURRENT.txt").readText().trim()
const val minSupportedKotlinPluginVersion = "1.4.32"
const val maxSupportedKotlinPluginVersion = "1.9.23"
const val maxSupportedKotlinPluginVersion = "2.1.10"
const val minAgpVersion = "4.1.0"
const val maxAgpVersion = "8.4.0"
const val maxAgpVersion = "8.8.0"
}

@Target(AnnotationTarget.FUNCTION, AnnotationTarget.CLASS)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import java.io.File
fun AbstractPluginTest.project(
gradleVersion: GradleVersion,
projectPath: File = projectRoot,
projectSetup: (File) -> Unit = defaultProjectSetup(gradleVersion),
projectSetup: (File) -> Unit = defaultProjectSetup(),
test: TestProject.() -> Unit = {}
): TestProject {
projectSetup(projectPath)
Expand Down Expand Up @@ -152,14 +152,13 @@ fun TestProject.buildAndFail(
.run { assertions() }
}

fun defaultProjectSetup(gradleVersion: GradleVersion): (File) -> Unit =
projectSetup("jvm", gradleVersion)
fun defaultProjectSetup(): (File) -> Unit =
projectSetup("jvm")

fun projectSetup(
kotlinPluginType: String,
gradleVersion: GradleVersion
kotlinPluginVersion: String = maxSupportedKotlinPluginVersion
): (File) -> Unit = {
val kotlinPluginVersion = maxSupportedKotlinPluginVersion
//language=Groovy
it.resolve("build.gradle").writeText(
"""
Expand Down

0 comments on commit c90d987

Please sign in to comment.