@@ -2121,9 +2121,14 @@ func TestWorkspaceWatcher(t *testing.T) {
21212121case w ,ok := <- wc :
21222122require .True (t ,ok ,"watch channel closed: %s" ,event )
21232123if ready == nil || ready (w ) {
2124- logger .Info (ctx ,"done waiting for event" ,slog .F ("event" ,event ))
2124+ logger .Info (ctx ,"done waiting for event" ,
2125+ slog .F ("event" ,event ),
2126+ slog .F ("workspace" ,w ))
21252127return
21262128}
2129+ logger .Info (ctx ,"skipped update for event" ,
2130+ slog .F ("event" ,event ),
2131+ slog .F ("workspace" ,w ))
21272132}
21282133}
21292134}
@@ -2194,12 +2199,23 @@ func TestWorkspaceWatcher(t *testing.T) {
21942199})
21952200// We want to verify pending state here, but it's possible that we reach
21962201// failed state fast enough that we never see pending.
2202+ sawFailed := false
21972203wait ("workspace build pending or failed" ,func (w codersdk.Workspace )bool {
2198- return w .LatestBuild .Status == codersdk .WorkspaceStatusPending || w .LatestBuild .Status == codersdk .WorkspaceStatusFailed
2199- })
2200- wait ("workspace build failed" ,func (w codersdk.Workspace )bool {
2201- return w .LatestBuild .Status == codersdk .WorkspaceStatusFailed
2204+ switch w .LatestBuild .Status {
2205+ case codersdk .WorkspaceStatusPending :
2206+ return true
2207+ case codersdk .WorkspaceStatusFailed :
2208+ sawFailed = true
2209+ return true
2210+ default :
2211+ return false
2212+ }
22022213})
2214+ if ! sawFailed {
2215+ wait ("workspace build failed" ,func (w codersdk.Workspace )bool {
2216+ return w .LatestBuild .Status == codersdk .WorkspaceStatusFailed
2217+ })
2218+ }
22032219
22042220closeFunc .Close ()
22052221build := coderdtest .CreateWorkspaceBuild (t ,client ,workspace ,database .WorkspaceTransitionStart )