diff --git a/TODO.md b/TODO.md index bf456fe..5f47fa4 100644 --- a/TODO.md +++ b/TODO.md @@ -20,6 +20,10 @@ regress. # Completed Steps +- 2026-09-23: Fixed the flaky `t.TempDir` cleanup race in `internal/handlers` + (the one fixed in `internal/service/webhook` by #198): + `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 diff --git a/internal/handlers/handlers_test.go b/internal/handlers/handlers_test.go index 68e116e..6aa2037 100644 --- a/internal/handlers/handlers_test.go +++ b/internal/handlers/handlers_test.go @@ -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() }