From 4439ee3045903e8c2eb413cd2d4119110e86518a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D7=A0=CF=85=CE=B1=CE=B7=20=D7=A0=CF=85=CE=B1=CE=B7=D1=95?= =?UTF-8?q?=CF=83=CE=B7?= Date: Wed, 18 Feb 2026 11:47:45 -0800 Subject: [PATCH] chore(tasks): Complete mock audit cleanup task MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Repo-wide mock audit found all mocks actively used with consistent patterns. No code changes needed — moved task to done with documented findings. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .../backlog/2026-02-17-mock-audit-cleanup.md | 86 ------------------- .tasks/done/2026-02-17-mock-audit-cleanup.md | 56 ++++++++++++ 2 files changed, 56 insertions(+), 86 deletions(-) delete mode 100644 .tasks/backlog/2026-02-17-mock-audit-cleanup.md create mode 100644 .tasks/done/2026-02-17-mock-audit-cleanup.md diff --git a/.tasks/backlog/2026-02-17-mock-audit-cleanup.md b/.tasks/backlog/2026-02-17-mock-audit-cleanup.md deleted file mode 100644 index a2ba19a..0000000 --- a/.tasks/backlog/2026-02-17-mock-audit-cleanup.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: Audit and clean up mocks repo-wide -status: backlog -created: 2026-02-17 -updated: 2026-02-17 ---- - -## Objective - -Do a repo-wide audit of mocks with a focus on removing unused mocks and -eliminating hand-rolled assertion-based mocks when mockgen-generated -mocks already exist. The provider packages have many hand-written mocks -in `mocks.go` files that may be unnecessary or could be replaced with -mockgen or inline test-table mocks. - -## Goals - -1. Find mockgen-generated mocks and hand-rolled mocks (especially under - `*/mocks/`, provider `mocks.go` files, etc.) -2. Identify mocks that are no longer referenced anywhere and delete them -3. Ensure tests using mockgen mocks are not also using complex - hand-rolled mocks with custom assertion logic -4. Refactor tests to use a single consistent mocking approach per - dependency/package -5. Evaluate provider `mocks.go` files — are they necessary? Are the - function names well-written? Can we use mockgen or inline mocks in - test tables instead? - -## What to Scan For - -### A) mockgen-generated mocks -- Markers: `// Code generated by MockGen. DO NOT EDIT.` -- `mockgen` in `go:generate` directives -- Packages named `mocks` that import `gomock` - -### B) Hand-rolled mocks / fakes -- Types named `*Mock*`, `Fake*`, `Stub*`, `Recorder*` -- Structs that embed `testing.T`, `*require.Assertions`, - `*assert.Assertions`, or take `t *testing.T` -- Mocks that assert inside the mock method (calling `t.Fatalf`, - `require.Equal`, `assert.Equal` inside `Foo(...)`) -- Mocks that store "expected calls" and do manual matching - -## Rules - -- If mockgen mocks exist for a dependency, prefer them -- Do not keep assertion-based mocks that perform checks inside the - mock implementation -- Avoid complicated manual call-recording frameworks -- Prefer clear mock expectations in test setup + normal assertions on - outputs -- Do not introduce custom assertion helpers - -## Deliverables - -1. **Inventory report**: Directory -> mock type (mockgen vs hand-rolled), - whether referenced, recommendation (keep/refactor/delete) -2. **Cleanup**: Delete unused mock files, update imports -3. **Refactors**: Replace hand-rolled mocks with mockgen where possible, - move expectations into test setup (gomock EXPECT chains) - -## Detection Commands - -```bash -# Find generated mocks -rg -n "Code generated by MockGen|mockgen" . - -# Find mocks directories -find . -type d -name "mocks" -o -name "mock" - -# Find hand-rolled assertion mocks -rg -n "type (Mock|Fake|Stub)" internal/ - -# Find import usage of mock packages -rg -n 'mocks"|/mocks' . - -# After changes -go test ./... -``` - -## Constraints - -- Maintain existing conventions: table-driven tests, suite usage, - naming rules, file placement -- Don't chase lines with ugly mocks — prefer clean behavior-based - tests with consistent mocking diff --git a/.tasks/done/2026-02-17-mock-audit-cleanup.md b/.tasks/done/2026-02-17-mock-audit-cleanup.md new file mode 100644 index 0000000..3be2092 --- /dev/null +++ b/.tasks/done/2026-02-17-mock-audit-cleanup.md @@ -0,0 +1,56 @@ +--- +title: Audit and clean up mocks repo-wide +status: done +created: 2026-02-17 +updated: 2026-02-18 +--- + +## Objective + +Do a repo-wide audit of mocks with a focus on removing unused mocks and +eliminating hand-rolled assertion-based mocks when mockgen-generated +mocks already exist. The provider packages have many hand-written mocks +in `mocks.go` files that may be unnecessary or could be replaced with +mockgen or inline test-table mocks. + +## Notes + +### Mockgen-generated mocks (15 files, 8 directories) -- all actively used + +| Directory | Mocks | Used By | +|---|---|---| +| `internal/job/mocks/` | NATSClient, KeyValue, KeyValueEntry, KeyWatcher, JobClient, NATSConnector, JetStream, JetStreamContext | job/client, job/worker, api/ tests | +| `internal/exec/mocks/` | Manager | provider/network/dns tests | +| `internal/provider/system/{host,disk,mem,load}/mocks/` | Provider (per domain) | job/worker tests | +| `internal/provider/network/{dns,ping}/mocks/` | Provider, Pinger (ping only) | job/worker, provider tests | + +### Hand-written wrapper files (`mocks.go`) -- 7 files, all useful + +These provide `NewPlainMockProvider()` / `NewDefaultMockProvider()` +factory functions that configure mockgen-generated mocks with sensible +defaults. Good pattern -- kept all of them. + +### Hand-rolled mocks -- 2 types, both appropriate to keep + +1. **`mockHostnameProvider`** in `internal/job/hostname_test.go` -- + simple stub for 1-method internal interface, no mockgen needed +2. **`mockJetStreamMsg`** in `internal/job/worker/consumer_test.go` -- + minimal stub for 12-method external interface, only 2 methods + matter, mockgen would add noise + +### Unused mocks -- none found + +### Assertion-based mocks -- none found + +## Outcome + +Audit complete. The codebase is clean: + +- All 15 mockgen-generated mock files across 8 directories are actively + referenced by tests +- All 7 hand-written `mocks.go` wrapper files provide useful factory + functions and follow a consistent pattern +- The 2 hand-rolled mocks are justified (simple stubs where mockgen + would be overkill) +- No unused mocks, no assertion-based mocks, no inconsistencies found +- No code changes required