Improve unit test coverage from 19% to 26%

Summary

  • Add unit tests for all testable pure functions across ~50 packages
  • Add test-coverage Makefile target for measuring coverage
  • Fix pre-existing TestPortAllocation failure by using existing portChecker interface
  • Update Go module dependencies (go mod tidy)

Coverage: 19% → 26.0%

Related to #688 — this MR covers all gains achievable without refactoring. A follow-up MR with interface extraction will be needed to push coverage further.

Bug fixes included:

  • Fix data race in retrieval.State.Alerts() — return a snapshot copy instead of a reference to the internal map, which could be concurrently modified by addAlert()/cleanAlerts()
  • Fix duplicate cron jobs in diagnostic.Cleaner.ScheduleLogCleanupJob() — create a fresh cron instance on reschedule to avoid accumulating duplicate entries
  • Fix libpq connection string escaping — add EscapeLibpqValue helper, properly quote and escape host, username, dbname, and password in ConnectionString() and connectionString()
  • Fix type mismatch in UI CreateClone — use branch object instead of branch name for initiallySelectedBranch
  • Add mutex-safe resetClones() method to Base cloning struct

Other changes:

  • Extract parseLVMOutput() for testability
  • Suppress deprecated aws-sdk-go-v1 lint warnings
  • Bump golangci-lint timeout from 2m to 5m

Changes

  • 6 commits adding tests across the engine codebase
  • ~2000 lines of new test code
  • 0 lines of production code changed (except Makefile and go.mod/go.sum)
  • All existing tests continue to pass
Edited by Artyom Kartasov

Merge request reports

Loading