Due to equality being based on `ShortName`, it was feasible that the
re-fetch exited early (in bindable shortcutting logic) causing the
ruleset's `OnlineID` to remain `-1` or something equally wrong.
Resolves issue pointed out at
https://github.com/ppy/osu/discussions/17538#discussioncomment-2471746.
Historically, tournament client may have written incorrect `OnlineID`
values. We wanted to use `ShortName` to re-fetch the ruleset. This test
ensures this flow is working correctly.
Caused by a `LoadComponentsAsync()` call being fired from a worker
thread, which will throw exceptions since the recent addition of safety
checks around that method.
It has transpired that on filename-case-sensitive filesystems, the
tournament client does not consistently handle custom asset paths.
Videos and mods could only be looked up from `videos` and `mods`
directories (lowercase), while flags could only be looked up from the
`Flags` directory (uppercase).
A complicating circumstance is that default country flags, coming from
osu-resources, also depend on the flag lookup being uppercased.
To attempt to clean up the handling as much as it appears to be
possible, automatically move user-supplied lowercase directories to
uppercase.