Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 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
5 changes: 4 additions & 1 deletion .github/workflows/verify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,7 @@ jobs:
cache-read-only: false

- name: Check code style
run: ./gradlew detekt koverVerify koverXmlReport
run: ./gradlew detekt

- name: Check tests
run: ./gradlew allTests -Pkover koverVerify
4 changes: 1 addition & 3 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,14 @@ Kotlin Multiplatform library for the [Umami](https://umami.is) web analytics RES
./gradlew detekt # Lint + auto-correct — runs automatically on pre-push; do NOT run autonomously
./gradlew allTests # All tests, all KMP targets — very slow on dev machines; do NOT run autonomously
./gradlew jvmTest # JVM tests only — still slow; do NOT run autonomously
./gradlew koverVerify # Coverage gates — runs full test suite; do NOT run autonomously
```

**When to run what:**
- To verify a change compiles and behaves correctly, run only the specific test class(es) affected:
```bash
./gradlew jvmTest --tests "dev.appoutlet.umami.api.auth.LoginTest"
```
- `detekt`, `allTests`, `jvmTest`, and `koverVerify` must **only** be run when explicitly requested by the user.
- CI pipeline order (reference only): `detekt` → `koverVerify` → `koverXmlReport`.
- `detekt`, `allTests` and `jvmTest` must **only** be run when explicitly requested by the user.

Dokka and Maven publish require `--no-configuration-cache` despite it being globally enabled.

Expand Down
32 changes: 0 additions & 32 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
import java.time.LocalDateTime
import kotlinx.kover.gradle.plugin.dsl.AggregationType
import kotlinx.kover.gradle.plugin.dsl.CoverageUnit

plugins {
alias(libs.plugins.android.application) apply false
Expand All @@ -14,17 +12,13 @@ plugins {
alias(libs.plugins.detekt)
alias(libs.plugins.dokka)
alias(libs.plugins.gitHooks)
alias(libs.plugins.kover)
alias(libs.plugins.kotlin.android) apply false
}

dependencies {
dokka(project(":umami"))
dokka(project(":umami-api"))
dokkaPlugin(libs.dokka.versioning)

kover(project(":umami"))
kover(project(":umami-api"))
}

dokka {
Expand Down Expand Up @@ -52,32 +46,6 @@ dokka {
}
}

kover {
reports {
verify {
rule {
minBound(
minValue = 80,
coverageUnits = CoverageUnit.LINE,
aggregationForGroup = AggregationType.COVERED_PERCENTAGE
)

minBound(
minValue = 80,
coverageUnits = CoverageUnit.INSTRUCTION,
aggregationForGroup = AggregationType.COVERED_PERCENTAGE
)

minBound(
minValue = 36,
coverageUnits = CoverageUnit.BRANCH,
aggregationForGroup = AggregationType.COVERED_PERCENTAGE,
)
}
}
}
}

gitHooks {
gitHooksDirectory = project.layout.projectDirectory.dir("git-hooks")
gitDirectory = project.rootProject.layout.projectDirectory.dir(".git")
Expand Down
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "
detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" }
dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" }
gitHooks = "eu.bambooapps.gradle.plugin.githook:1.1.1"
kover = "org.jetbrains.kotlinx.kover:0.9.8"
kover = { id = "org.jetbrains.kotlinx.kover.aggregation", version = "0.9.8" }
maven-publish = { id = "com.vanniktech.maven.publish", version.ref = "maven-publish" }
mokkery = "dev.mokkery:3.4.1"
kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
Expand Down
1 change: 0 additions & 1 deletion sample/simple-compose-app/composeApp/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ kotlin {
binaries.executable()
}
listOf(
iosX64(),
iosArm64(),
iosSimulatorArm64()
).forEach {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,12 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.input.PasswordVisualTransformation
import androidx.compose.ui.unit.dp
import dev.appoutlet.umami.api.UmamiApi
import dev.appoutlet.umami.api.auth
import dev.appoutlet.umami.domain.User
import kotlinx.coroutines.launch

private val auth = umami.auth()
private val auth = UmamiApi().auth()

@Composable
fun Authentication() {
Expand Down
28 changes: 24 additions & 4 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
import kotlinx.kover.gradle.aggregation.settings.dsl.minBound
import kotlinx.kover.gradle.plugin.dsl.AggregationType
import kotlinx.kover.gradle.plugin.dsl.CoverageUnit

rootProject.name = "umami"

pluginManagement {
Expand Down Expand Up @@ -29,11 +33,27 @@ dependencyResolutionManagement {
}
}

plugins {
id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0"
}

include(":umami")
include(":umami-api")
include(":sample:simple-compose-app:composeApp")
include(":sample:terminalApp")


plugins {
id("org.jetbrains.kotlinx.kover.aggregation") version "0.9.8"
id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0"
}
Comment thread
MessiasLima marked this conversation as resolved.

kover {
skipProjects(":sample:simple-compose-app:composeApp", ":sample:terminalApp")

reports {
verify {
rule {
minBound(80, CoverageUnit.LINE, AggregationType.COVERED_PERCENTAGE)
minBound(80, CoverageUnit.INSTRUCTION, AggregationType.COVERED_PERCENTAGE)
minBound(36, CoverageUnit.BRANCH, AggregationType.COVERED_PERCENTAGE)
}
}
}
}
9 changes: 4 additions & 5 deletions umami-api/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
@file:OptIn(ExperimentalWasmDsl::class)
@file:OptIn(ExperimentalWasmDsl::class, KotlinNativeCacheApi::class)

import java.net.URI
import java.time.LocalDateTime
import org.gradle.kotlin.dsl.dokkaPlugin
import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
import org.jetbrains.kotlin.gradle.plugin.mpp.DisableCacheInKotlinVersion
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeCacheApi
Comment thread
MessiasLima marked this conversation as resolved.
Outdated

plugins {
alias(libs.plugins.android.library)
alias(libs.plugins.detekt)
alias(libs.plugins.dokka)
alias(libs.plugins.kotlin.multiplatform)
alias(libs.plugins.kover)
alias(libs.plugins.maven.publish)
alias(libs.plugins.mokkery)
alias(libs.plugins.serialization)
Expand All @@ -21,10 +23,8 @@ kotlin {
jvm()
js { browser() }
wasmJs { browser() }
iosX64()
iosArm64()
iosSimulatorArm64()
macosX64()
macosArm64()
linuxX64()
mingwX64()
Expand Down Expand Up @@ -61,7 +61,6 @@ kotlin {
}
}
}

}

dependencies {
Expand Down
3 changes: 0 additions & 3 deletions umami/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ plugins {
alias(libs.plugins.detekt)
alias(libs.plugins.dokka)
alias(libs.plugins.kotlin.multiplatform)
alias(libs.plugins.kover)
alias(libs.plugins.maven.publish)
alias(libs.plugins.mokkery)
alias(libs.plugins.serialization)
Expand All @@ -22,10 +21,8 @@ kotlin {
jvm()
js { browser() }
wasmJs { browser() }
iosX64()
iosArm64()
iosSimulatorArm64()
macosX64()
macosArm64()
linuxX64()
mingwX64()
Expand Down