diff --git a/workspace-server/internal/pendinguploads/sweeper_test.go b/workspace-server/internal/pendinguploads/sweeper_test.go index b1a723a6..e1bce986 100644 --- a/workspace-server/internal/pendinguploads/sweeper_test.go +++ b/workspace-server/internal/pendinguploads/sweeper_test.go @@ -280,9 +280,13 @@ func TestStartSweeper_RecordsMetricsOnSuccess(t *testing.T) { // vs-metric-record race (see waitForMetricDelta comment). waitForMetricDelta(t, deltaAcked, 3, 2*time.Second) waitForMetricDelta(t, deltaExpired, 5, 2*time.Second) - // Error counter MUST stay at zero on the success path. Read after - // the success counters have settled — once those are correct, - // StartSweeper has fully processed this cycle's result. + // Error counter MUST stay at zero on the success path. Poll for it to + // settle first — a goroutine from a prior test (e.g. + // TestStartSweeper_TransientErrorDoesNotCrashLoop) may still be running + // and incrementing errorCount after its metricDelta() baseline was + // captured. This race manifests as deltaError=1 on success-path + // assertions in slow -race CI runs (#22 fix). + waitForMetricDelta(t, deltaError, 0, 2*time.Second) if got := deltaError(); got != 0 { t.Errorf("error counter delta = %d, want 0", got) }