Skip to content

Commit

Permalink
Release 0.7.0-Beta
Browse files Browse the repository at this point in the history
PR #346

Co-authored-by: Leonid Startsev <sandwwraith@users.noreply.github.com>
  • Loading branch information
shanshin and sandwwraith committed Apr 21, 2023
1 parent 9c36932 commit 15091b6
Show file tree
Hide file tree
Showing 35 changed files with 270 additions and 355 deletions.
10 changes: 10 additions & 0 deletions CHANGELOG.md
@@ -1,3 +1,13 @@
0.7.0-Beta / 2023-04-21
===================
### Features
* Added advanced support of Android projects, flavors and flavor dimensions (#316, #319)
* Introduced Kover Tool artifacts for CLI and runtime for offline instrumentation (#322)

### Internal features
* Added dokka docs
* Added binary compatibility validator (#305)

0.7.0-Alpha / 2023-02-27
===================
This is a preview version of new major release with the API rework in order to support configuration cache, project isolation model, Android Gradle plugin and source-set level granularity of configuration.
Expand Down
8 changes: 4 additions & 4 deletions README.md
Expand Up @@ -35,7 +35,7 @@ Add the following to your top-level build file:

```kotlin
plugins {
id("org.jetbrains.kotlinx.kover") version "0.7.0-Alpha"
id("org.jetbrains.kotlinx.kover") version "0.7.0-Beta"
}
```
</details>
Expand All @@ -45,7 +45,7 @@ plugins {

```groovy
plugins {
id 'org.jetbrains.kotlinx.kover' version '0.7.0-Alpha'
id 'org.jetbrains.kotlinx.kover' version '0.7.0-Beta'
}
```
</details>
Expand All @@ -65,7 +65,7 @@ buildscript {
}

dependencies {
classpath("org.jetbrains.kotlinx:kover-gradle-plugin:0.7.0-Alpha")
classpath("org.jetbrains.kotlinx:kover-gradle-plugin:0.7.0-Beta")
}
}

Expand All @@ -84,7 +84,7 @@ buildscript {
mavenCentral()
}
dependencies {
classpath 'org.jetbrains.kotlinx:kover-gradle-plugin:0.7.0-Alpha'
classpath 'org.jetbrains.kotlinx:kover-gradle-plugin:0.7.0-Beta'
}
}
Expand Down
98 changes: 92 additions & 6 deletions build.gradle.kts
@@ -1,3 +1,5 @@
import java.time.LocalDate
import java.time.format.DateTimeFormatter
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

Expand All @@ -23,9 +25,6 @@ val kotlinVersion = property("kotlinVersion")
val localRepositoryUri = uri("build/.m2")
val junitParallelism = findProperty("kover.test.junit.parallelism")?.toString()

// override version in deploy
properties["DeployVersion"]?.let { version = it }

sourceSets {
create("functionalTest") {
compileClasspath += sourceSets.main.get().output + configurations.testRuntimeClasspath
Expand Down Expand Up @@ -77,7 +76,8 @@ val functionalTest by tasks.registering(Test::class) {
systemProperties["junit.jupiter.execution.parallel.mode.default"] = "concurrent"
systemProperties["junit.jupiter.execution.parallel.mode.classes.default"] = "concurrent"
systemProperties["junit.jupiter.execution.parallel.config.strategy"] = "fixed"
systemProperties["junit.jupiter.execution.parallel.config.fixed.parallelism"] = junitParallelism?.toIntOrNull()?.toString() ?: "2"
systemProperties["junit.jupiter.execution.parallel.config.fixed.parallelism"] =
junitParallelism?.toIntOrNull()?.toString() ?: "2"
// this is necessary if tests are run for debugging, in this case it is more difficult to stop at the test you need when they are executed in parallel and you are not sure on which test the execution will pause
systemProperties["junit.jupiter.execution.parallel.enabled"] = if (junitParallelism == "no") "false" else "true"

Expand All @@ -96,7 +96,10 @@ fun Test.setSystemPropertyFromProject(name: String) {
if (project.hasProperty(name)) systemProperties[name] = project.property(name)
}

fun Test.setBooleanSystemPropertyFromProject(projectPropertyName: String, systemPropertyName: String = projectPropertyName) {
fun Test.setBooleanSystemPropertyFromProject(
projectPropertyName: String,
systemPropertyName: String = projectPropertyName
) {
if (project.hasProperty(projectPropertyName)) systemProperties[systemPropertyName] = true.toString()
}

Expand Down Expand Up @@ -156,5 +159,88 @@ gradlePlugin {
}

apiValidation {
ignoredProjects.addAll(listOf("kover-cli", "kover-offline"))
ignoredProjects.addAll(listOf("kover-cli", "kover-offline-runtime"))
}



// ====================
// Release preparation
// ====================
tasks.register("prepareRelease") {
dependsOn(tasks.named("dokkaHtml"))

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


dir.file("gradle.properties").asFile.patchProperties(releaseVersion)
dir.file("CHANGELOG.md").asFile.patchChangeLog(releaseVersion)

dir.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)
}
}
}

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)
}
Expand Up @@ -101,8 +101,10 @@ fun MavenPublication.addMetadata() {
if (!name.isPresent) {
name.set(artifactId)
}
if (hasProperty("releaseVersion")) {
version = property("releaseVersion") as String
}
groupId = "org.jetbrains.kotlinx"

description.set(extension.description)

url.set("https://github.com/Kotlin/kotlinx-kover")
Expand Down
Expand Up @@ -58,24 +58,24 @@
<div class="breadcrumbs"><a href="../../../index.html">Kover Gradle Plugin</a><span class="delimiter">/</span><a href="../index.html">kotlinx.kover.gradle.plugin.dsl</a><span class="delimiter">/</span><span class="current">KoverHtmlReportConfig</span></div>
<div class="cover ">
<h1 class="cover"><span>Kover</span><wbr></wbr><span>Html</span><wbr></wbr><span>Report</span><wbr></wbr><span><span>Config</span></span></h1>
<div class="platform-hinted " data-platform-hinted="data-platform-hinted"><div class="content sourceset-dependent-content" data-active="" data-togglable=":dokkaHtml/main"><div class="symbol monospace"><span class="token keyword">interface </span><a href="index.html">KoverHtmlReportConfig</a> : <a href="../-kover-general-html-report-config/index.html">KoverGeneralHtmlReportConfig</a></div></div></div>
<div class="platform-hinted " data-platform-hinted="data-platform-hinted"><div class="content sourceset-dependent-content" data-active="" data-togglable=":dokkaHtml/main"><div class="symbol monospace"><span class="token keyword">interface </span><a href="index.html">KoverHtmlReportConfig</a></div></div></div>
</div>
<div class="tabbedcontent">
<div class="tabs-section" tabs-section="tabs-section"><button class="section-tab" data-active="" data-togglable="CONSTRUCTOR,TYPE,FUNCTION,PROPERTY">Members</button></div>
<div class="tabs-section-body">
<div data-togglable="FUNCTION">
<h2 class="">Functions</h2>
<div class="table"><a data-name="-1497451183%2FFunctions%2F769193423" anchor-label="filters" id="-1497451183%2FFunctions%2F769193423" data-filterable-set=":dokkaHtml/main"></a>
<div class="table"><a data-name="547270927%2FFunctions%2F769193423" anchor-label="filters" id="547270927%2FFunctions%2F769193423" data-filterable-set=":dokkaHtml/main"></a>
<div class="table-row" data-filterable-current=":dokkaHtml/main" data-filterable-set=":dokkaHtml/main">
<div class="main-subrow keyValue ">
<div class=""><span class="inline-flex">
<div><a href="../-kover-general-html-report-config/filters.html"><span><span>filters</span></span></a></div>
<span class="anchor-wrapper"><span class="anchor-icon" pointing-to="-1497451183%2FFunctions%2F769193423"></span>
<div><a href="filters.html"><span><span>filters</span></span></a></div>
<span class="anchor-wrapper"><span class="anchor-icon" pointing-to="547270927%2FFunctions%2F769193423"></span>
<div class="copy-popup-wrapper "><span class="copy-popup-icon"></span><span>Link copied to clipboard</span></div>
</span></span></div>
<div>
<div class="title">
<div class="platform-hinted " data-platform-hinted="data-platform-hinted"><div class="content sourceset-dependent-content" data-active="" data-togglable=":dokkaHtml/main"><div class="symbol monospace"><span class="token keyword">abstract </span><span class="token keyword"></span><span class="token keyword">fun </span><a href="../-kover-general-html-report-config/filters.html"><span class="token function">filters</span></a><span class="token punctuation">(</span><span class="parameters "><span class="parameter ">config<span class="token operator">: </span><span data-unresolved-link="org.gradle.api/Action///PointingToDeclaration/">Action</span><span class="token operator">&lt;</span><span class="token keyword"></span><a href="../-kover-report-filters/index.html">KoverReportFilters</a><span class="token operator">&gt;</span></span></span><span class="token punctuation">)</span></div><div class="brief "><p class="paragraph">Override common filters only for HTML report.</p></div></div></div>
<div class="platform-hinted " data-platform-hinted="data-platform-hinted"><div class="content sourceset-dependent-content" data-active="" data-togglable=":dokkaHtml/main"><div class="symbol monospace"><span class="token keyword">abstract </span><span class="token keyword"></span><span class="token keyword">fun </span><a href="filters.html"><span class="token function">filters</span></a><span class="token punctuation">(</span><span class="parameters "><span class="parameter ">config<span class="token operator">: </span><span data-unresolved-link="org.gradle.api/Action///PointingToDeclaration/">Action</span><span class="token operator">&lt;</span><span class="token keyword"></span><a href="../-kover-report-filters/index.html">KoverReportFilters</a><span class="token operator">&gt;</span></span></span><span class="token punctuation">)</span></div><div class="brief "><p class="paragraph">Override common filters only for HTML report.</p></div></div></div>
</div>
</div>
</div>
Expand Down Expand Up @@ -109,22 +109,22 @@ <h2 class="">Properties</h2>
</span></span></div>
<div>
<div class="title">
<div class="platform-hinted " data-platform-hinted="data-platform-hinted"><div class="content sourceset-dependent-content" data-active="" data-togglable=":dokkaHtml/main"><div class="symbol monospace"><span class="token keyword">abstract </span><span class="token keyword"></span><span class="token keyword">var </span><a href="on-check.html">onCheck</a><span class="token operator">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a><span class="token operator">?</span></div><div class="brief "><p class="paragraph">Generate an HTML report when running the <code class="lang-kotlin">check</code> task. <code class="lang-kotlin">null</code> by default and report isn't generated on <code class="lang-kotlin">check</code> task.</p></div></div></div>
<div class="platform-hinted " data-platform-hinted="data-platform-hinted"><div class="content sourceset-dependent-content" data-active="" data-togglable=":dokkaHtml/main"><div class="symbol monospace"><span class="token keyword">abstract </span><span class="token keyword"></span><span class="token keyword">var </span><a href="on-check.html">onCheck</a><span class="token operator">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a></div><div class="brief "><p class="paragraph">Generate an HTML report when running the <code class="lang-kotlin">check</code> task.</p></div></div></div>
</div>
</div>
</div>
</div>
<a data-name="-355221890%2FProperties%2F769193423" anchor-label="title" id="-355221890%2FProperties%2F769193423" data-filterable-set=":dokkaHtml/main"></a>
<a data-name="-1152074368%2FProperties%2F769193423" anchor-label="title" id="-1152074368%2FProperties%2F769193423" data-filterable-set=":dokkaHtml/main"></a>
<div class="table-row" data-filterable-current=":dokkaHtml/main" data-filterable-set=":dokkaHtml/main">
<div class="main-subrow keyValue ">
<div class=""><span class="inline-flex">
<div><a href="../-kover-general-html-report-config/title.html"><span><span>title</span></span></a></div>
<span class="anchor-wrapper"><span class="anchor-icon" pointing-to="-355221890%2FProperties%2F769193423"></span>
<div><a href="title.html"><span><span>title</span></span></a></div>
<span class="anchor-wrapper"><span class="anchor-icon" pointing-to="-1152074368%2FProperties%2F769193423"></span>
<div class="copy-popup-wrapper "><span class="copy-popup-icon"></span><span>Link copied to clipboard</span></div>
</span></span></div>
<div>
<div class="title">
<div class="platform-hinted " data-platform-hinted="data-platform-hinted"><div class="content sourceset-dependent-content" data-active="" data-togglable=":dokkaHtml/main"><div class="symbol monospace"><span class="token keyword">abstract </span><span class="token keyword"></span><span class="token keyword">var </span><a href="../-kover-general-html-report-config/title.html">title</a><span class="token operator">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a><span class="token operator">?</span></div><div class="brief "><p class="paragraph">Specify header in HTML reports.</p></div></div></div>
<div class="platform-hinted " data-platform-hinted="data-platform-hinted"><div class="content sourceset-dependent-content" data-active="" data-togglable=":dokkaHtml/main"><div class="symbol monospace"><span class="token keyword">abstract </span><span class="token keyword"></span><span class="token keyword">var </span><a href="title.html">title</a><span class="token operator">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a><span class="token operator">?</span></div><div class="brief "><p class="paragraph">Specify header in HTML reports.</p></div></div></div>
</div>
</div>
</div>
Expand Down
Expand Up @@ -59,7 +59,7 @@
<div class="cover ">
<h1 class="cover"><span>on</span><wbr></wbr><span><span>Check</span></span></h1>
</div>
<div class="platform-hinted " data-platform-hinted="data-platform-hinted"><div class="content sourceset-dependent-content" data-active="" data-togglable=":dokkaHtml/main"><div class="symbol monospace"><span class="token keyword">abstract </span><span class="token keyword"></span><span class="token keyword">var </span><a href="on-check.html">onCheck</a><span class="token operator">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a><span class="token operator">?</span></div><p class="paragraph">Generate an HTML report when running the <code class="lang-kotlin">check</code> task. <code class="lang-kotlin">null</code> by default and report isn't generated on <code class="lang-kotlin">check</code> task.</p></div></div>
<div class="platform-hinted " data-platform-hinted="data-platform-hinted"><div class="content sourceset-dependent-content" data-active="" data-togglable=":dokkaHtml/main"><div class="symbol monospace"><span class="token keyword">abstract </span><span class="token keyword"></span><span class="token keyword">var </span><a href="on-check.html">onCheck</a><span class="token operator">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a></div><p class="paragraph">Generate an HTML report when running the <code class="lang-kotlin">check</code> task.</p></div></div>
</div>
<div class="footer">
<span class="go-to-top-icon"><a href="#content" id="go-to-top-link"></a></span><span>© 2023 Copyright</span><span
Expand Down
Expand Up @@ -59,7 +59,7 @@
<div class="cover ">
<h1 class="cover"><span><span>DEPENDENCY_CONFIGURATION_NAME</span></span></h1>
</div>
<div class="platform-hinted " data-platform-hinted="data-platform-hinted"><div class="content sourceset-dependent-content" data-active="" data-togglable=":dokkaHtml/main"><div class="symbol monospace"><span class="token keyword">const </span><span class="token keyword">val </span><a href="-d-e-p-e-n-d-e-n-c-y_-c-o-n-f-i-g-u-r-a-t-i-o-n_-n-a-m-e.html">DEPENDENCY_CONFIGURATION_NAME</a><span class="token operator">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a></div><p class="paragraph">Name of the configurations to add dependency on Kover setup in another project.</p></div></div>
<div class="platform-hinted " data-platform-hinted="data-platform-hinted"><div class="content sourceset-dependent-content" data-active="" data-togglable=":dokkaHtml/main"><div class="symbol monospace"><span class="token keyword">const </span><span class="token keyword">val </span><a href="-d-e-p-e-n-d-e-n-c-y_-c-o-n-f-i-g-u-r-a-t-i-o-n_-n-a-m-e.html">DEPENDENCY_CONFIGURATION_NAME</a><span class="token operator">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a></div><p class="paragraph">Name of the configurations to add dependency on Kover reports from another project.</p></div></div>
</div>
<div class="footer">
<span class="go-to-top-icon"><a href="#content" id="go-to-top-link"></a></span><span>© 2023 Copyright</span><span
Expand Down

0 comments on commit 15091b6

Please sign in to comment.