mirror of
https://github.com/ppy/osu.git
synced 2024-11-11 12:57:36 +08:00
Merge pull request #10171 from peppy/fix-key-binding-destruction
Fix global bindings being lost when running tests under headless contexts
This commit is contained in:
commit
030d1c1966
@ -69,12 +69,26 @@ namespace osu.Game.Tests.Visual
|
||||
/// </summary>
|
||||
protected virtual bool UseOnlineAPI => false;
|
||||
|
||||
/// <summary>
|
||||
/// When running headless, there is an opportunity to use the host storage rather than creating a second isolated one.
|
||||
/// This is because the host is recycled per TestScene execution in headless at an nunit level.
|
||||
/// </summary>
|
||||
private Storage isolatedHostStorage;
|
||||
|
||||
protected override IReadOnlyDependencyContainer CreateChildDependencies(IReadOnlyDependencyContainer parent)
|
||||
{
|
||||
if (!UseFreshStoragePerRun)
|
||||
isolatedHostStorage = (parent.Get<GameHost>() as HeadlessGameHost)?.Storage;
|
||||
|
||||
contextFactory = new Lazy<DatabaseContextFactory>(() =>
|
||||
{
|
||||
var factory = new DatabaseContextFactory(LocalStorage);
|
||||
|
||||
// only reset the database if not using the host storage.
|
||||
// if we reset the host storage, it will delete global key bindings.
|
||||
if (isolatedHostStorage == null)
|
||||
factory.ResetDatabase();
|
||||
|
||||
using (var usage = factory.Get())
|
||||
usage.Migrate();
|
||||
return factory;
|
||||
@ -135,12 +149,9 @@ namespace osu.Game.Tests.Visual
|
||||
}
|
||||
|
||||
localStorage =
|
||||
new Lazy<Storage>(() => !UseFreshStoragePerRun && host is HeadlessGameHost ? host.Storage : new NativeStorage(Path.Combine(RuntimeInfo.StartupDirectory, $"{GetType().Name}-{Guid.NewGuid()}")));
|
||||
new Lazy<Storage>(() => isolatedHostStorage ?? new NativeStorage(Path.Combine(RuntimeInfo.StartupDirectory, $"{GetType().Name}-{Guid.NewGuid()}")));
|
||||
}
|
||||
|
||||
[Resolved]
|
||||
private GameHost host { get; set; }
|
||||
|
||||
[Resolved]
|
||||
protected AudioManager Audio { get; private set; }
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user