Wait for webhook deployments in handlers tests instead of sleeping (closes #211)
Check / check (pull_request) Skipped

TestHandleWebhookProcessesValidWebhook slept 100ms after posting a
webhook, racing the background deployment that writes its log under the
test's temp directory against temp directory cleanup. The test context
now keeps the webhook service, and the test waits on its
WaitForDeployments, as the webhook service tests already do. The other
webhook handler tests never start a deployment.

Model: opus-5-5
This commit is contained in:
2026-09-23 00:31:29 +00:00
parent 1d769834de
commit 2d031f6fad
2 changed files with 8 additions and 5 deletions
+3
View File
@@ -20,6 +20,9 @@ regress.
# Completed Steps
- 2026-09-23: Fixed the same `t.TempDir` cleanup race in `internal/handlers`:
`TestHandleWebhookProcessesValidWebhook` now waits with the webhook service's
`WaitForDeployments` instead of sleeping (#211).
- 2026-09-22: Vendored the canonical prettier/format toolchain from the
`sneak/prompts` scaffold: added `.prettierrc` (tabWidth 4, proseWrap always),
pinned `package.json` + `yarn.lock` (prettier 3.8.1), taught
+5 -5
View File
@@ -8,7 +8,6 @@ import (
"strconv"
"strings"
"testing"
"time"
"github.com/go-chi/chi/v5"
"github.com/stretchr/testify/assert"
@@ -43,6 +42,7 @@ type testContext struct {
authSvc *auth.Service
appSvc *app.Service
deploySvc *deploy.Service
webhookSvc *webhook.Service
middleware *middleware.Middleware
}
@@ -188,6 +188,7 @@ func setupTestHandlers(t *testing.T) *testContext {
authSvc: authSvc,
appSvc: appSvc,
deploySvc: deploySvc,
webhookSvc: webhookSvc,
middleware: mw,
}
}
@@ -1213,8 +1214,7 @@ func TestHandleWebhookProcessesValidWebhook(t *testing.T) {
assert.Equal(t, http.StatusOK, recorder.Code)
// Allow async deployment goroutine to complete before test cleanup.
// The deployment will fail quickly (docker not connected) but we need
// to wait for it to finish to avoid temp directory cleanup race.
time.Sleep(100 * time.Millisecond)
// Wait for the async deployment goroutine to finish so its writes
// under the temp dir complete before test cleanup.
testCtx.webhookSvc.WaitForDeployments()
}