mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-07-09 16:00:59 +00:00
golangci-lint run ./... failed on ~190 pre-existing errcheck violations and 5 unformatted files, burying any new regression in noise. Fix all of them: - Test files that hand-rolled mock-mode set/restore (vmware, truenas, and friends) now use the canonical setMockModeForTest/testutil.SetMockMode helper instead of drift copies that ignored SetEnabled errors. - internal/mock and internal/monitoring tests get package-local mustSetEnabled/mustSetMockEnabled/mustSetMonitorMockMode helpers that fail the test on toggle errors. - pkg/auth/sqlite_manager.go, pkg/metrics/store.go, pkg/server/server.go: rollbacks in defers use the explicit-discard idiom, migration renames and rollup commits log failures, the hosted reaper goroutine logs an error exit, shutdown mock-disable logs failures. - Remaining test sites check errors with t.Fatalf/t.Errorf or explicitly discard best-effort calls (restore-chmods, handler-closure unmarshals) per existing repo style. - gofmt: internal/api/maintenance_verification.go, internal/ai/demo.go and three findings test files. Only dupl findings remain (44 pre-existing production-code duplication pairs) — those need real refactors, not mechanical fixes. Full test suites pass for every touched package.
42 lines
807 B
Go
42 lines
807 B
Go
package mock
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestSetEnabledDisableDoesNotDeadlockWhenUpdateIsBlocked(t *testing.T) {
|
|
mustSetEnabled(t, false)
|
|
t.Cleanup(func() {
|
|
mustSetEnabled(t, false)
|
|
})
|
|
|
|
cfg := DefaultConfig
|
|
cfg.RandomMetrics = true
|
|
SetMockConfig(cfg)
|
|
mustSetEnabled(t, true)
|
|
|
|
dataMu.Lock()
|
|
time.Sleep(currentMockUpdateInterval() + 250*time.Millisecond)
|
|
|
|
done := make(chan struct{})
|
|
go func() {
|
|
if err := SetEnabled(false); err != nil {
|
|
t.Errorf("SetEnabled(false): %v", err)
|
|
}
|
|
close(done)
|
|
}()
|
|
|
|
time.Sleep(100 * time.Millisecond)
|
|
dataMu.Unlock()
|
|
|
|
select {
|
|
case <-done:
|
|
case <-time.After(5 * time.Second):
|
|
t.Fatal("SetEnabled(false) deadlocked while stopping update loop")
|
|
}
|
|
|
|
if IsMockEnabled() {
|
|
t.Fatal("mock mode should be disabled after SetEnabled(false)")
|
|
}
|
|
}
|