Fix a race in ScorekeeperSessionTest's admittedGuest helper
A guest counts as connected before the host's sheet has arrived over the socket, so tests that read the guest's players straight away could see an empty list. The helper now waits for the guest to hold the host's sheet. 0 failures in 12 runs (was ~1 in 3). Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_016eTor2tpxKb4dXbd8RqnvZ
This commit is contained in:
@@ -145,6 +145,11 @@ class ScorekeeperSessionTest {
|
|||||||
await("$name to be asking") { host.state.requests.any { it.id == deviceId } }
|
await("$name to be asking") { host.state.requests.any { it.id == deviceId } }
|
||||||
host.session.allow(deviceId)
|
host.session.allow(deviceId)
|
||||||
await("$name to be let in") { guest.state.value.connected }
|
await("$name to be let in") { guest.state.value.connected }
|
||||||
|
// The sheet follows the connection over the socket, so `connected` can
|
||||||
|
// flip while it is still in flight. Callers read the guest's sheet at
|
||||||
|
// once (its players, its rounds), and on a slow runner that was an empty
|
||||||
|
// one: wait until the guest is looking at the host's.
|
||||||
|
await("$name to receive the sheet") { guest.state.value.sheet == host.state.sheet }
|
||||||
return guest
|
return guest
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user