From 0855c64ffbd80ee95e074416114fba9b50fb281b Mon Sep 17 00:00:00 2001 From: Sergey Shanshin Date: Thu, 27 Jul 2023 14:51:59 +0300 Subject: [PATCH] Release 0.7.3 PR #439 Co-authored-by: Leonid Startsev --- CHANGELOG.md | 16 +++ README.md | 8 +- build.gradle.kts | 99 +++++++++++++++++++ docs/gradle-plugin/index.md | 6 +- .../migrations/migration-to-0.7.0.md | 6 +- docs/offline-instrumentation/index.md | 4 +- gradle.properties | 4 +- kover-gradle-plugin/build.gradle.kts | 88 ----------------- .../examples/android/flavors/build.gradle.kts | 2 +- .../android/minimal_groovy/build.gradle | 2 +- .../android/minimal_kts/build.gradle.kts | 2 +- .../android/multiplatform/build.gradle.kts | 2 +- .../android/multiproject/build.gradle.kts | 2 +- .../android/variantUsage/build.gradle.kts | 2 +- .../examples/jvm/defaults/build.gradle.kts | 2 +- .../examples/jvm/merged/build.gradle.kts | 2 +- .../examples/jvm/minimal/build.gradle.kts | 2 +- .../examples/runtime-api/build.gradle.kts | 4 +- 18 files changed, 140 insertions(+), 113 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9f5027cc..3a9804b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,19 @@ +0.7.3 / 2023-07-26 +=================== +## Kover Gradle Plugin +### Features +* Added ability to specify verification rules in the root of reports config +* [`#423`](https://github.com/Kotlin/kotlinx-kover/issues/423) Implemented task of generating binary report + +### Bugfixes +* [`#405`](https://github.com/Kotlin/kotlinx-kover/issues/405) Fixed lookup for tests if unit tests are disabled in Android config +* [`#415`](https://github.com/Kotlin/kotlinx-kover/issues/415) Fixed usage of Kover Gradle Plugin in buildSrc directory +* [`#431`](https://github.com/Kotlin/kotlinx-kover/issues/431) Fixed excluding of companion object by annotation from report + +## Kover Offline +### Features +* Added API for getting coverage inside a running application, instrumented offline + 0.7.2 / 2023-06-26 =================== ### Features diff --git a/README.md b/README.md index e60b04fa..2c8a3450 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ Add the following to your top-level build file: ```kotlin plugins { - id("org.jetbrains.kotlinx.kover") version "0.7.2" + id("org.jetbrains.kotlinx.kover") version "0.7.3" } ``` @@ -46,7 +46,7 @@ plugins { ```groovy plugins { - id 'org.jetbrains.kotlinx.kover' version '0.7.2' + id 'org.jetbrains.kotlinx.kover' version '0.7.3' } ``` @@ -69,7 +69,7 @@ buildscript { } dependencies { - classpath("org.jetbrains.kotlinx:kover-gradle-plugin:0.7.2") + classpath("org.jetbrains.kotlinx:kover-gradle-plugin:0.7.3") } } @@ -88,7 +88,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'org.jetbrains.kotlinx:kover-gradle-plugin:0.7.2' + classpath 'org.jetbrains.kotlinx:kover-gradle-plugin:0.7.3' } } diff --git a/build.gradle.kts b/build.gradle.kts index 63d2abd1..ae6dd5ef 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -14,8 +14,107 @@ * limitations under the License. */ +import java.time.LocalDate +import java.time.format.DateTimeFormatter + plugins { kotlin("jvm") apply false alias(libs.plugins.kotlinx.dokka) apply false alias(libs.plugins.kotlinx.binaryCompatibilityValidator) apply false } + + + +// ==================== +// Release preparation +// ==================== +tasks.register("prepareRelease") { + + doLast { + if (!project.hasProperty("releaseVersion")) { + throw GradleException("Property 'releaseVersion' is required to run this task") + } + val releaseVersion = project.property("releaseVersion") as String + val prevReleaseVersion = project.property("kover.release.version") as String + + val projectDir = layout.projectDirectory + + projectDir.file("gradle.properties").asFile.patchProperties(releaseVersion) + projectDir.file("CHANGELOG.md").asFile.patchChangeLog(releaseVersion) + + projectDir.file("README.md").asFile.replaceInFile(prevReleaseVersion, releaseVersion) + + // replace versions in examples + projectDir.dir("kover-gradle-plugin").dir("examples").patchExamples(releaseVersion, prevReleaseVersion) + projectDir.dir("kover-offline-runtime").dir("examples").patchExamples(releaseVersion, prevReleaseVersion) + + // replace versions in docs + projectDir.dir("docs").patchDocs(releaseVersion, prevReleaseVersion) + } +} + +fun Directory.patchExamples(releaseVersion: String, prevReleaseVersion: String) { + asFileTree.matching { + include("**/*gradle") + include("**/*gradle.kts") + }.files.forEach { + it.replaceInFile(prevReleaseVersion, releaseVersion) + } +} + +fun Directory.patchDocs(releaseVersion: String, prevReleaseVersion: String) { + asFileTree.files.forEach { + it.replaceInFile(prevReleaseVersion, releaseVersion) + } +} + +fun File.patchChangeLog(releaseVersion: String) { + val oldContent = readText() + writer().use { + it.appendLine("$releaseVersion / ${LocalDate.now().format(DateTimeFormatter.ISO_DATE)}") + it.appendLine("===================") + it.appendLine("TODO add changelog!") + it.appendLine() + it.append(oldContent) + } +} + +fun File.patchProperties(releaseVersion: String) { + val oldLines = readLines() + writer().use { writer -> + oldLines.forEach { line -> + when { + line.startsWith("version=") -> writer.append("version=").appendLine(increaseSnapshotVersion(releaseVersion)) + line.startsWith("kover.release.version=") -> writer.append("kover.release.version=").appendLine(releaseVersion) + else -> writer.appendLine(line) + } + } + } +} + +// modify version '1.2.3' to '1.2.4' and '1.2.3-Beta' to '1.2.3-SNAPSHOT' +fun increaseSnapshotVersion(releaseVersion: String): String { + // remove postfix like '-Alpha' + val correctedVersion = releaseVersion.substringBefore('-') + if (correctedVersion != releaseVersion) { + return "$correctedVersion-SNAPSHOT" + } + + // split version 0.0.0 to int parts + val parts = correctedVersion.split('.') + val newVersion = parts.mapIndexed { index, value -> + if (index == parts.size - 1) { + (value.toInt() + 1).toString() + } else { + value + } + }.joinToString(".") + + return "$newVersion-SNAPSHOT" +} + +fun File.replaceInFile(old: String, new: String) { + val newContent = readText().replace(old, new) + writeText(newContent) +} + diff --git a/docs/gradle-plugin/index.md b/docs/gradle-plugin/index.md index 5db4fcce..86a00b7e 100644 --- a/docs/gradle-plugin/index.md +++ b/docs/gradle-plugin/index.md @@ -44,7 +44,7 @@ Add the following to your top-level build file: ```kotlin plugins { - id("org.jetbrains.kotlinx.kover") version "0.7.2" + id("org.jetbrains.kotlinx.kover") version "0.7.3" } ``` @@ -62,7 +62,7 @@ buildscript { } dependencies { - classpath("org.jetbrains.kotlinx:kover-gradle-plugin:0.7.2") + classpath("org.jetbrains.kotlinx:kover-gradle-plugin:0.7.3") } } @@ -78,7 +78,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'org.jetbrains.kotlinx:kover-gradle-plugin:0.7.2' + classpath 'org.jetbrains.kotlinx:kover-gradle-plugin:0.7.3' } } diff --git a/docs/gradle-plugin/migrations/migration-to-0.7.0.md b/docs/gradle-plugin/migrations/migration-to-0.7.0.md index 737b59f6..5cc512b0 100644 --- a/docs/gradle-plugin/migrations/migration-to-0.7.0.md +++ b/docs/gradle-plugin/migrations/migration-to-0.7.0.md @@ -1,7 +1,7 @@ -# Kover migration guide from 0.6.x to 0.7.2 +# Kover migration guide from 0.6.x to 0.7.3 ## Migration steps -To migrate to version `0.7.2`, you must follow all steps below if they are applicable to your project. +To migrate to version `0.7.3`, you must follow all steps below if they are applicable to your project. ### Merge reports config was removed Now all Kotlin report tasks (`koverHtmlReport`, `koverXmlReport`, `koverVerify`) are in single copy, they can be both single-project or merged cross-projects reports. @@ -612,7 +612,7 @@ kover { --- -### Could not find org.jetbrains.kotlinx:kover:0.7.2 +### Could not find org.jetbrains.kotlinx:kover:0.7.3 _Solution_ rename dependencies in _buildSrc_ from `org.jetbrains.kotlinx:kover:` to `org.jetbrains.kotlinx:kover-gradle-plugin:` diff --git a/docs/offline-instrumentation/index.md b/docs/offline-instrumentation/index.md index 221519c8..077fc0c7 100644 --- a/docs/offline-instrumentation/index.md +++ b/docs/offline-instrumentation/index.md @@ -62,8 +62,8 @@ configurations.register("koverCli") { } dependencies { - runtimeOnly("org.jetbrains.kotlinx:kover-offline-runtime:0.7.2") - add("koverCli", "org.jetbrains.kotlinx:kover-cli:0.7.2") + runtimeOnly("org.jetbrains.kotlinx:kover-offline-runtime:0.7.3") + add("koverCli", "org.jetbrains.kotlinx:kover-cli:0.7.3") testImplementation(kotlin("test")) } diff --git a/gradle.properties b/gradle.properties index 354f7453..78a5e2bc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ -version=0.7.3-SNAPSHOT +version=0.8.0-SNAPSHOT group=org.jetbrains.kotlinx # version of the latest release -kover.release.version=0.7.2 +kover.release.version=0.7.3 kotlin.code.style=official diff --git a/kover-gradle-plugin/build.gradle.kts b/kover-gradle-plugin/build.gradle.kts index 64bb4a46..f171b258 100644 --- a/kover-gradle-plugin/build.gradle.kts +++ b/kover-gradle-plugin/build.gradle.kts @@ -1,7 +1,5 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.dsl.KotlinVersion -import java.time.LocalDate -import java.time.format.DateTimeFormatter import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation import org.jetbrains.kotlin.gradle.tasks.KotlinCompile @@ -189,89 +187,3 @@ gradlePlugin { } } } - - -// ==================== -// Release preparation -// ==================== -tasks.register("prepareRelease") { - - doLast { - if (!project.hasProperty("releaseVersion")) { - throw GradleException("Property 'releaseVersion' is required to run this task") - } - val releaseVersion = project.property("releaseVersion") as String - val prevReleaseVersion = project.property("kover.release.version") as String - - val dir = layout.projectDirectory - val rootDir = rootProject.layout.projectDirectory - - rootDir.file("gradle.properties").asFile.patchProperties(releaseVersion) - rootDir.file("CHANGELOG.md").asFile.patchChangeLog(releaseVersion) - - rootDir.file("README.md").asFile.replaceInFile(prevReleaseVersion, releaseVersion) - - // replace versions in examples - dir.dir("examples").asFileTree.matching { - include("**/*gradle") - include("**/*gradle.kts") - }.files.forEach { - it.replaceInFile(prevReleaseVersion, releaseVersion) - } - - // replace versions in docs - rootDir.dir("docs").asFileTree.files.forEach { - it.replaceInFile(prevReleaseVersion, releaseVersion) - } - } -} - -fun File.patchChangeLog(releaseVersion: String) { - val oldContent = readText() - writer().use { - it.appendLine("$releaseVersion / ${LocalDate.now().format(DateTimeFormatter.ISO_DATE)}") - it.appendLine("===================") - it.appendLine("TODO add changelog!") - it.appendLine() - it.append(oldContent) - } -} - -fun File.patchProperties(releaseVersion: String) { - val oldLines = readLines() - writer().use { writer -> - oldLines.forEach { line -> - when { - line.startsWith("version=") -> writer.append("version=").appendLine(increaseSnapshotVersion(releaseVersion)) - line.startsWith("kover.release.version=") -> writer.append("kover.release.version=").appendLine(releaseVersion) - else -> writer.appendLine(line) - } - } - } -} - -// modify version '1.2.3' to '1.2.4' and '1.2.3-Beta' to '1.2.3-SNAPSHOT' -fun increaseSnapshotVersion(releaseVersion: String): String { - // remove postfix like '-Alpha' - val correctedVersion = releaseVersion.substringBefore('-') - if (correctedVersion != releaseVersion) { - return "$correctedVersion-SNAPSHOT" - } - - // split version 0.0.0 to int parts - val parts = correctedVersion.split('.') - val newVersion = parts.mapIndexed { index, value -> - if (index == parts.size - 1) { - (value.toInt() + 1).toString() - } else { - value - } - }.joinToString(".") - - return "$newVersion-SNAPSHOT" -} - -fun File.replaceInFile(old: String, new: String) { - val newContent = readText().replace(old, new) - writeText(newContent) -} diff --git a/kover-gradle-plugin/examples/android/flavors/build.gradle.kts b/kover-gradle-plugin/examples/android/flavors/build.gradle.kts index a7215d13..a08b784d 100644 --- a/kover-gradle-plugin/examples/android/flavors/build.gradle.kts +++ b/kover-gradle-plugin/examples/android/flavors/build.gradle.kts @@ -2,5 +2,5 @@ plugins { id("com.android.application") version "7.4.0" apply false id("com.android.library") version "7.4.0" apply false id("org.jetbrains.kotlin.android") version "1.8.20" apply false - id("org.jetbrains.kotlinx.kover") version "0.7.2" apply false + id("org.jetbrains.kotlinx.kover") version "0.7.3" apply false } diff --git a/kover-gradle-plugin/examples/android/minimal_groovy/build.gradle b/kover-gradle-plugin/examples/android/minimal_groovy/build.gradle index c8862bfc..0d2f58d4 100644 --- a/kover-gradle-plugin/examples/android/minimal_groovy/build.gradle +++ b/kover-gradle-plugin/examples/android/minimal_groovy/build.gradle @@ -2,5 +2,5 @@ plugins { id 'com.android.application' version '7.4.0' apply false id 'com.android.library' version '7.4.0' apply false id 'org.jetbrains.kotlin.android' version '1.8.20' apply false - id 'org.jetbrains.kotlinx.kover' version '0.7.2' apply false + id 'org.jetbrains.kotlinx.kover' version '0.7.3' apply false } diff --git a/kover-gradle-plugin/examples/android/minimal_kts/build.gradle.kts b/kover-gradle-plugin/examples/android/minimal_kts/build.gradle.kts index a7215d13..a08b784d 100644 --- a/kover-gradle-plugin/examples/android/minimal_kts/build.gradle.kts +++ b/kover-gradle-plugin/examples/android/minimal_kts/build.gradle.kts @@ -2,5 +2,5 @@ plugins { id("com.android.application") version "7.4.0" apply false id("com.android.library") version "7.4.0" apply false id("org.jetbrains.kotlin.android") version "1.8.20" apply false - id("org.jetbrains.kotlinx.kover") version "0.7.2" apply false + id("org.jetbrains.kotlinx.kover") version "0.7.3" apply false } diff --git a/kover-gradle-plugin/examples/android/multiplatform/build.gradle.kts b/kover-gradle-plugin/examples/android/multiplatform/build.gradle.kts index c6f11048..b8232cd1 100644 --- a/kover-gradle-plugin/examples/android/multiplatform/build.gradle.kts +++ b/kover-gradle-plugin/examples/android/multiplatform/build.gradle.kts @@ -2,7 +2,7 @@ plugins { id("com.android.application") version "7.4.0" apply false id("com.android.library") version "7.4.0" apply false kotlin("multiplatform") version ("1.8.20") apply false - id("org.jetbrains.kotlinx.kover") version "0.7.2" + id("org.jetbrains.kotlinx.kover") version "0.7.3" } dependencies { diff --git a/kover-gradle-plugin/examples/android/multiproject/build.gradle.kts b/kover-gradle-plugin/examples/android/multiproject/build.gradle.kts index a7215d13..a08b784d 100644 --- a/kover-gradle-plugin/examples/android/multiproject/build.gradle.kts +++ b/kover-gradle-plugin/examples/android/multiproject/build.gradle.kts @@ -2,5 +2,5 @@ plugins { id("com.android.application") version "7.4.0" apply false id("com.android.library") version "7.4.0" apply false id("org.jetbrains.kotlin.android") version "1.8.20" apply false - id("org.jetbrains.kotlinx.kover") version "0.7.2" apply false + id("org.jetbrains.kotlinx.kover") version "0.7.3" apply false } diff --git a/kover-gradle-plugin/examples/android/variantUsage/build.gradle.kts b/kover-gradle-plugin/examples/android/variantUsage/build.gradle.kts index a7215d13..a08b784d 100644 --- a/kover-gradle-plugin/examples/android/variantUsage/build.gradle.kts +++ b/kover-gradle-plugin/examples/android/variantUsage/build.gradle.kts @@ -2,5 +2,5 @@ plugins { id("com.android.application") version "7.4.0" apply false id("com.android.library") version "7.4.0" apply false id("org.jetbrains.kotlin.android") version "1.8.20" apply false - id("org.jetbrains.kotlinx.kover") version "0.7.2" apply false + id("org.jetbrains.kotlinx.kover") version "0.7.3" apply false } diff --git a/kover-gradle-plugin/examples/jvm/defaults/build.gradle.kts b/kover-gradle-plugin/examples/jvm/defaults/build.gradle.kts index ceeb508f..04a58c57 100644 --- a/kover-gradle-plugin/examples/jvm/defaults/build.gradle.kts +++ b/kover-gradle-plugin/examples/jvm/defaults/build.gradle.kts @@ -1,6 +1,6 @@ plugins { kotlin("jvm") version "1.7.10" - id("org.jetbrains.kotlinx.kover") version "0.7.2" + id("org.jetbrains.kotlinx.kover") version "0.7.3" } repositories { diff --git a/kover-gradle-plugin/examples/jvm/merged/build.gradle.kts b/kover-gradle-plugin/examples/jvm/merged/build.gradle.kts index 1a2f9b98..b90b5470 100644 --- a/kover-gradle-plugin/examples/jvm/merged/build.gradle.kts +++ b/kover-gradle-plugin/examples/jvm/merged/build.gradle.kts @@ -1,6 +1,6 @@ plugins { kotlin("jvm") version "1.7.10" - id("org.jetbrains.kotlinx.kover") version "0.7.2" + id("org.jetbrains.kotlinx.kover") version "0.7.3" } repositories { diff --git a/kover-gradle-plugin/examples/jvm/minimal/build.gradle.kts b/kover-gradle-plugin/examples/jvm/minimal/build.gradle.kts index db388b2d..5a221a9f 100644 --- a/kover-gradle-plugin/examples/jvm/minimal/build.gradle.kts +++ b/kover-gradle-plugin/examples/jvm/minimal/build.gradle.kts @@ -1,6 +1,6 @@ plugins { kotlin("jvm") version "1.7.10" - id("org.jetbrains.kotlinx.kover") version "0.7.2" + id("org.jetbrains.kotlinx.kover") version "0.7.3" } repositories { diff --git a/kover-offline-runtime/examples/runtime-api/build.gradle.kts b/kover-offline-runtime/examples/runtime-api/build.gradle.kts index 79fbc563..c304f5d8 100644 --- a/kover-offline-runtime/examples/runtime-api/build.gradle.kts +++ b/kover-offline-runtime/examples/runtime-api/build.gradle.kts @@ -16,9 +16,9 @@ configurations.register("koverCli") { } dependencies { - add("koverCli", "org.jetbrains.kotlinx:kover-cli:0.7.2") + add("koverCli", "org.jetbrains.kotlinx:kover-cli:0.7.3") - implementation("org.jetbrains.kotlinx:kover-offline-runtime:0.7.2") + implementation("org.jetbrains.kotlinx:kover-offline-runtime:0.7.3") testImplementation(kotlin("test")) }