As seen in https://github.com/ppy/osu/actions/runs/7607899979/job/20716013982?pr=26662#step:5:75
In https://github.com/ppy/osu/pull/26484, I went "well if I'm moving the
enabling of validation of playback rate to `SubmittingPlayer` context,
then surely I can remove the local override in the test scene, right?"
Reader: Apparently I did not notice that `FakeImportingPlayer :
TestPlayer : SoloPlayer : SubmittingPlayer`. So no, I could not remove
the local override in the test scene.
You could probably attempt to conjure up some excuse about deep
inheritance hierarchies here but nah. Really just a failure to read
on my behalf as usual.
Temporary workaround for https://github.com/ppy/osu/issues/26404.
It appears that some audio files do not behave well with BASS, leading
BASS to report a contradictory state of affairs (i.e. a track that is
in playing state but also not progressing). This appears to be related
to seeking specifically, therefore only enable the validation of
playback rate in the most sensitive contexts, namely when any sort of
score submission is involved.
The previous assert step was optimistically assuming that the async
continuation that writes the value of
`FakeImportingPlayer.ImportedScore` always completes before it, but
that's not necessarily true even if the continuation is instant (it is
still subject to things like task scheduling and TPL thread pool
limits).
To ensure no spurious failures, swap out the assert step for an until
step instead.
Was previously not handled at all, therefore displaying request failures
in the test log output. While that was mostly a red herring and
shouldn't have caused any actual *test* failures, it is still better to
handle this explicitly in a realistic manner.
Because submission can be prevented by both not having been issued a
correct submission token, and by not actually registering any hits in
gameplay, ensure that tests that don't receive a token register at least
one hit, to avoid potentially having test cases that test the "no token"
flow pass erroneously because they never had any hits in the first
place.