From f15c246f0a12ad63c0952f3d378a5bcbd947d209 Mon Sep 17 00:00:00 2001 From: Sergii Gnatiuk Date: Thu, 11 Dec 2025 12:09:06 +0200 Subject: [PATCH] cover-jet test kit support --- CHANGELOG.md | 8 ++++++ gradle.properties | 2 +- .../gradleprobe/gradlerunner/RunnerBuilder.kt | 28 ++++++++----------- .../extension/GradlePluginTestExtension.kt | 6 +++- .../gradleprobe/gradlerunner/RunTaskTest.kt | 22 ++++++++------- 5 files changed, 38 insertions(+), 28 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7ffc4cd..be54cf9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.0.2] - 2025-12-11 + +### Added + +- TestKit properties support via `testKitPropertyName` parameter in `buildGradleRunner` function +- Integration with [CoverJet](https://github.com/gw-kit/cover-jet-plugin) plugin through `io.github.gwkit.coverjet.test-kit` system property +- Automatic injection of TestKit properties into test project's `gradle.properties` + ## [0.0.1] - 2025-12-06 ### Added diff --git a/gradle.properties b/gradle.properties index 87f1642..dc28deb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ group=io.github.gw-kit -version=0.0.1 +version=0.0.2 kotlin.code.style=official diff --git a/src/main/kotlin/io/github/gwkit/gradleprobe/gradlerunner/RunnerBuilder.kt b/src/main/kotlin/io/github/gwkit/gradleprobe/gradlerunner/RunnerBuilder.kt index 2280d4f..1c6ae16 100644 --- a/src/main/kotlin/io/github/gwkit/gradleprobe/gradlerunner/RunnerBuilder.kt +++ b/src/main/kotlin/io/github/gwkit/gradleprobe/gradlerunner/RunnerBuilder.kt @@ -24,21 +24,17 @@ val GRADLE_HOME: String fun buildGradleRunner( projectRoot: File, testKitPropertyName: String? = null, -): GradleRunner { - return GradleRunner.create() - .withPluginClasspath() - .withProjectDir(projectRoot) - .withTestKitDir( - projectRoot.resolve(GRADLE_HOME).apply { mkdirs() } - ) - .apply { - if (testKitPropertyName != null) { - val testKitPath: String? = System.getProperty(testKitPropertyName) - if (testKitPath != null) { - File(projectDir, "gradle.properties").appendText( - File(testKitPath).readText() - ) - } - } +): GradleRunner = GradleRunner.create() + .withPluginClasspath() + .withProjectDir(projectRoot) + .withTestKitDir(projectRoot.resolve(GRADLE_HOME).apply { mkdirs() }) + .apply { applyTestKit(testKitPropertyName) } + +private fun GradleRunner.applyTestKit(testKitPropertyName: String?) { + testKitPropertyName + ?.let(System::getProperty) + ?.let { testKitFile -> File(testKitFile).readText() } + ?.let { testKitContent -> + File(projectDir, "gradle.properties").appendText(testKitContent) } } diff --git a/src/main/kotlin/io/github/gwkit/gradleprobe/junit/extension/GradlePluginTestExtension.kt b/src/main/kotlin/io/github/gwkit/gradleprobe/junit/extension/GradlePluginTestExtension.kt index 44a8ac2..844ae36 100644 --- a/src/main/kotlin/io/github/gwkit/gradleprobe/junit/extension/GradlePluginTestExtension.kt +++ b/src/main/kotlin/io/github/gwkit/gradleprobe/junit/extension/GradlePluginTestExtension.kt @@ -49,7 +49,9 @@ class GradlePluginTestExtension : TestInstancePostProcessor { with(testInstance) { injectProperty(rootProjectDir) - injectProperty(buildGradleRunner(rootProjectDir)) + injectProperty( + buildGradleRunner(rootProjectDir, TEST_KIT_FILE_PROP), + ) injectProperty { val fileToBeRestored: File = resolveExistingFile(rootProjectDir, relativePath) val originCopy: File = tempTestFile.resolve(UUID.randomUUID().toString()) @@ -141,6 +143,8 @@ class GradlePluginTestExtension : TestInstancePostProcessor { const val GROOVY_BUILD_FILE_NAME = "build.gradle" const val KOTLIN_BUILD_FILE_NAME = "build.gradle.kts" + const val TEST_KIT_FILE_PROP = "io.github.gwkit.coverjet.test-kit" + val GRADLE_BUILD_FILES = setOf(GROOVY_BUILD_FILE_NAME, KOTLIN_BUILD_FILE_NAME) } } diff --git a/src/test/kotlin/io/github/gwkit/gradleprobe/gradlerunner/RunTaskTest.kt b/src/test/kotlin/io/github/gwkit/gradleprobe/gradlerunner/RunTaskTest.kt index 184e4ee..6452724 100644 --- a/src/test/kotlin/io/github/gwkit/gradleprobe/gradlerunner/RunTaskTest.kt +++ b/src/test/kotlin/io/github/gwkit/gradleprobe/gradlerunner/RunTaskTest.kt @@ -42,17 +42,19 @@ class RunTaskTest { } private fun createMinimalProject(): File { - val projectRoot = tempDir.resolve("project").apply { mkdirs() } - projectRoot.resolve("settings.gradle.kts").writeText("""rootProject.name = "test-project"""") - projectRoot.resolve("build.gradle.kts").writeText("""plugins { id("base") }""") - return projectRoot + return tempDir.resolve("project").apply { + mkdirs() + resolve("settings.gradle.kts").writeText("""rootProject.name = "test-project"""") + resolve("build.gradle.kts").writeText("""plugins { id("base") }""") + } } private fun createFailingProject(): File { - val projectRoot = tempDir.resolve("failing-project").apply { mkdirs() } - projectRoot.resolve("settings.gradle.kts").writeText("""rootProject.name = "failing-project"""") - projectRoot.resolve("build.gradle.kts").writeText( - """ + return tempDir.resolve("failing-project").apply { + mkdirs() + resolve("settings.gradle.kts").writeText("""rootProject.name = "failing-project"""") + resolve("build.gradle.kts").writeText( + """ plugins { id("base") } tasks.register("failingTask") { @@ -61,7 +63,7 @@ class RunTaskTest { } } """.trimIndent() - ) - return projectRoot + ) + } } }