Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

test against newest kotlin, gradle, ktlint, and AGP versions #833

Merged
merged 1 commit into from
Feb 27, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Expand Up @@ -5,6 +5,7 @@ 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 +25,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
@@ -1,7 +1,6 @@
package org.jlleitschuh.gradle.ktlint.testdsl

import org.gradle.util.GradleVersion
import org.jlleitschuh.gradle.ktlint.KtlintBasePlugin
import org.junit.jupiter.api.extension.ExtensionContext
import org.junit.jupiter.params.provider.Arguments
import org.junit.jupiter.params.provider.ArgumentsProvider
Expand All @@ -11,13 +10,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
Loading