@@ -2121,9 +2121,14 @@ func TestWorkspaceWatcher(t *testing.T) {
2121
2121
case w ,ok := <- wc :
2122
2122
require .True (t ,ok ,"watch channel closed: %s" ,event )
2123
2123
if 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 ))
2125
2127
return
2126
2128
}
2129
+ logger .Info (ctx ,"skipped update for event" ,
2130
+ slog .F ("event" ,event ),
2131
+ slog .F ("workspace" ,w ))
2127
2132
}
2128
2133
}
2129
2134
}
@@ -2194,12 +2199,23 @@ func TestWorkspaceWatcher(t *testing.T) {
2194
2199
})
2195
2200
// We want to verify pending state here, but it's possible that we reach
2196
2201
// failed state fast enough that we never see pending.
2202
+ sawFailed := false
2197
2203
wait ("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
+ }
2202
2213
})
2214
+ if ! sawFailed {
2215
+ wait ("workspace build failed" ,func (w codersdk.Workspace )bool {
2216
+ return w .LatestBuild .Status == codersdk .WorkspaceStatusFailed
2217
+ })
2218
+ }
2203
2219
2204
2220
closeFunc .Close ()
2205
2221
build := coderdtest .CreateWorkspaceBuild (t ,client ,workspace ,database .WorkspaceTransitionStart )