3.4 KiB
3.4 KiB
Test Coverage Report — uopi
Date: 2026-06-24
Branch: develop
Task: #167 — Raise backend coverage toward 90%
Status: All suites green — go test ./... -race, go vet ./..., and gofmt -l clean.
Overall
- Main module total coverage: 67.7% of statements.
- 38 test files, 218 test/bench/fuzz functions in the main module.
- 27 new test files added across the coverage initiative.
- 3-module
go.workworkspace — each module is tested independently (go test ./...from the root only exercises the main module;pkg/caandpkg/pvamust be tested bycd-ing into them).
Main module (github.com/uopi/uopi) — by package
| Coverage | Package | Notes |
|---|---|---|
| 100.0% | internal/config |
|
| 100.0% | internal/pamauth |
stub (non-PAM build) |
| 97.1% | internal/metrics |
|
| 96.3% | internal/broker |
signal fan-out core |
| 89.2% | internal/panelacl |
|
| 89.0% | internal/audit |
|
| 85.5% | internal/access |
|
| 82.6% | internal/storage |
|
| 82.4% | internal/datasource/stub |
|
| 81.7% | internal/confmgr |
|
| 81.0% | internal/dsp |
|
| 79.1% | internal/datasource/servervar |
|
| 72.9% | internal/datasource/synthetic |
|
| 67.2% | internal/api |
large handler surface |
| 66.6% | internal/controllogic |
engine/Lua/cron uncovered |
| 55.6% | internal/datasource |
iface + ctx helpers |
| 34.1% | internal/server |
HTTP/WebSocket |
| 33.9% | internal/ldapauth |
network-bound |
| 33.6% | internal/datasource/epics |
CGo/libca-bound |
| 0.0% | internal/datasource/pva |
network-bound |
| 0.0% | cmd/uopi, cmd/catools, cmd/pvtools, tools/buildfrontend |
mains — no tests |
Workspace modules
| Module | Coverage |
|---|---|
pkg/ca (goca) |
83.9% root · 90.0% proto · testca 0% (test harness) |
pkg/pva (gopva) |
85.5% pvdata · 12.1% root (network client) |
Remaining gaps toward 90%
The lowest packages are all I/O- or platform-bound, needing integration harnesses rather than unit tests:
server(34%) — HTTP/WebSocket handlers.ldapauth(34%) — needs a mock LDAP server.datasource/epics(34%) — CGolibcalinkage.datasource/pva(0%) — needs a PVA test server (analogous totestcafor CA).cmd/*mains — typically excluded from coverage targets.
Pure-logic packages are now in the 80–100% range. The biggest realistic remaining
wins are api (67%) and controllogic (67%), where the uncovered code is the
control-logic engine (Lua runtime, cron scheduling, dialog emission) and the
network-dependent API handlers (channelFinder, archiverSearch).
Coverage gains (this initiative)
| Package | Before | After |
|---|---|---|
internal/api |
53.8% | 67.2% |
internal/audit |
75.3% | 89.0% |
internal/broker |
78.9% | 96.3% |
internal/panelacl |
65.9% | 89.2% |
internal/confmgr |
73.4% | 81.7% |
internal/dsp |
66.3% | 81.0% |
internal/datasource |
0% | 55.6% |
internal/pamauth |
0% | 100% |
pkg/ca |
82.2% | 83.9% |
Notes
- Two inherently racy assertions were deliberately dropped (broker cancelled-context
ReadNow; audit closed-channel synchronous fallback): both depended on nondeterministicselectordering and flaked under-race. The surrounding code paths remain covered by other tests. - All new test files are
gofmt-clean, matching the CI gate (gofmt -l $(git ls-files '*.go')).