test: add Kover aggregation - #575
Merged
Merged
Conversation
Enable kotlinx-kover 0.9.8 on library modules with a 75% line-coverage floor. Generated icon/symbol catalogues stay excluded; production packages are not filtered to inflate the number. Also fix three bugs found while writing tests: - Version.fromString treats empty semver groups as 0 - FileSelector maps the exe format to .exe - system-info Linux/Windows backends require the matching Platform
kdroidFilter
force-pushed
the
feat/kover-75-coverage
branch
from
August 18, 2026 10:29
c283630 to
0fdd1ec
Compare
Make the 75% floor the union of Linux, macOS and Windows reports instead of a single-OS check. Exercise systemd, D-Bus, hidpi and Linux JNI paths, and fix disableEfficiencyMode EACCES plus a Windows getAllTasks UnsatisfiedLinkError off-host.
JNI libraries share a name across platforms, so isLoaded is not a platform check. Gate Linux-only native calls, skip headless AWT and off-OS launchd, and accept notification/hotkey failure when the desktop service is missing.
Add portable unit tests for chrome helpers and Compose measure policies, plus real-window cases for TitleBar, WindowScaffold, WindowControls, and DialogTitleBar. Those run under Xvfb on the existing tao-headful job.
NativeContextMenuRepresentation uses NSMenu on macOS, so the Compose semantics assertion only applies off-Mac. Resolve Kover agent paths as RegularFileProperty so taoHeadfulTest no longer captures the Gradle script layout object.
kdroidFilter
marked this pull request as ready for review
August 18, 2026 14:15
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🚀 Description
Wires kotlinx-kover 0.9.8 onto every published library module and adds a large set of tests that drive shipped parsers, fallbacks, and macOS APIs. The aggregated report excludes only generated icon/symbol catalogues (
sf-symbols,freedesktop.icons,window.icons). Production packages are not filtered to inflate the number.On this Mac the published-runtime line coverage is 44.93% (10 873 / 24 198). The 75%
koverVerifyfloor is kept on purpose and will failcheckuntil Linux and Windows native paths are exercised.📄 Motivation and Context
The published JAR is one coverage denominator across three OS backends. Most of the remaining miss is Tao scene/popup/deco and off-OS JNI, which cannot run here. This PR records the Kover setup and the Mac-reachable / pure-Kotlin work so Linux and Windows can continue on the same branch.
Bugs found while writing tests (fixed in this PR):
Version.fromString— empty semver groups usedtoInt()and threw; they now parse as0viatoIntOrNull() ?: 0.FileSelector— theexeformat had a suffix mapping (-nsis.) but no.exeextension fallback, so a plainsetup.exewas never selected.LinuxSystemInfo/WindowsSystemInfo—NativeLibraryLoadercaches by library name (nucleus_system_info), sobridge.isLoadedcan be true off-platform.ready()now also requires the matchingPlatform.Current.🧪 How Has This Been Tested?
From
/Users/elie/IdeaProjects/Nucleus-kover-coverageon macOS:taoHeadfulTestis optional: the Kover agent is attached via an args file, andRobot()cases skip when Accessibility TCC is missing (a hang until the 240s watchdog is treated as a defect).📦 Types of changes
✅ Checklist