| name | testing-go-code |
| description | Run Go unit tests, coverage reports, and benchmarks. Use when you need to run tests, check coverage, run benchmarks, or regenerate mocks after interface changes. |
Testing Go Code
All commands run from the Go module root (cova/).
Unit Tests
task test
task test -- -run TestName
task test -- -short
For test conventions (naming, assertions, table-driven patterns, mock usage), see the writing-go-tests skill.
Coverage
task cov
Runs tests with coverage and opens an HTML report in the browser.
Benchmarks
task bench
Runs all benchmarks with memory allocation stats.
Combined Check
task check
Runs tests + lint in sequence. Use before committing.
Mock Regeneration
mockery
Run from the module root with no arguments after adding or modifying interfaces. Configuration is in .mockery.yml.
NEVER edit generated mock files (*_mock.go) manually. Always regenerate with mockery. This applies to all mock changes — adding parameters, renaming methods, updating signatures, fixing imports. No exceptions.
When mockery fails due to stale mocks
Stale mock files frequently cause mockery to fail (e.g., type conflicts from old signatures). When this happens:
- Delete the stale
*_mock.go file(s)
- Re-run
mockery
Do NOT attempt to fix the mock file by hand — delete and regenerate.