Files
uopi/docs/TEST_COVERAGE_REPORT.md
T
Martino Ferrari c0f7e662be Testing
2026-06-24 01:39:15 +02:00

3.4 KiB
Raw Blame History

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.work workspace — each module is tested independently (go test ./... from the root only exercises the main module; pkg/ca and pkg/pva must be tested by cd-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%) — CGo libca linkage.
  • datasource/pva (0%) — needs a PVA test server (analogous to testca for CA).
  • cmd/* mains — typically excluded from coverage targets.

Pure-logic packages are now in the 80100% 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 nondeterministic select ordering 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')).