From 6c671434ec9670443fbd1a118ec95a218da955b5 Mon Sep 17 00:00:00 2001 From: Dan Balasescu Date: Tue, 9 Aug 2022 14:41:36 +0900 Subject: [PATCH 1/2] Fix gameplay tests crashing when run multiple times --- osu.Game/Screens/Play/SubmittingPlayer.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/osu.Game/Screens/Play/SubmittingPlayer.cs b/osu.Game/Screens/Play/SubmittingPlayer.cs index 02a95ae9eb..2e9e01ab8d 100644 --- a/osu.Game/Screens/Play/SubmittingPlayer.cs +++ b/osu.Game/Screens/Play/SubmittingPlayer.cs @@ -203,5 +203,15 @@ namespace osu.Game.Screens.Play api.Queue(request); return scoreSubmissionSource.Task; } + + protected override void Dispose(bool isDisposing) + { + base.Dispose(isDisposing); + + // Specific to tests, the player can be disposed without OnExiting() ever being called. + // We should make sure that the gameplay session has finished even in this case. + if (LoadedBeatmapSuccessfully) + spectatorClient.EndPlaying(GameplayState); + } } } From 00bdd52cffa923616b480830464daee1f84c0e0d Mon Sep 17 00:00:00 2001 From: Dan Balasescu Date: Tue, 9 Aug 2022 15:05:05 +0900 Subject: [PATCH 2/2] Move to TestPlayer and add null check --- osu.Game/Screens/Play/SubmittingPlayer.cs | 10 ---------- osu.Game/Tests/Visual/TestPlayer.cs | 14 ++++++++++++++ 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/osu.Game/Screens/Play/SubmittingPlayer.cs b/osu.Game/Screens/Play/SubmittingPlayer.cs index 2e9e01ab8d..02a95ae9eb 100644 --- a/osu.Game/Screens/Play/SubmittingPlayer.cs +++ b/osu.Game/Screens/Play/SubmittingPlayer.cs @@ -203,15 +203,5 @@ namespace osu.Game.Screens.Play api.Queue(request); return scoreSubmissionSource.Task; } - - protected override void Dispose(bool isDisposing) - { - base.Dispose(isDisposing); - - // Specific to tests, the player can be disposed without OnExiting() ever being called. - // We should make sure that the gameplay session has finished even in this case. - if (LoadedBeatmapSuccessfully) - spectatorClient.EndPlaying(GameplayState); - } } } diff --git a/osu.Game/Tests/Visual/TestPlayer.cs b/osu.Game/Tests/Visual/TestPlayer.cs index e2ddd1734d..5cc01a8918 100644 --- a/osu.Game/Tests/Visual/TestPlayer.cs +++ b/osu.Game/Tests/Visual/TestPlayer.cs @@ -10,6 +10,7 @@ using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Game.Online.API; using osu.Game.Online.Rooms; +using osu.Game.Online.Spectator; using osu.Game.Rulesets.Judgements; using osu.Game.Rulesets.Mods; using osu.Game.Rulesets.Scoring; @@ -46,6 +47,9 @@ namespace osu.Game.Tests.Visual public readonly List Results = new List(); + [Resolved] + private SpectatorClient spectatorClient { get; set; } + public TestPlayer(bool allowPause = true, bool showResults = true, bool pauseOnFocusLost = false) : base(new PlayerConfiguration { @@ -98,5 +102,15 @@ namespace osu.Game.Tests.Visual ScoreProcessor.NewJudgement += r => Results.Add(r); } + + protected override void Dispose(bool isDisposing) + { + base.Dispose(isDisposing); + + // Specific to tests, the player can be disposed without OnExiting() ever being called. + // We should make sure that the gameplay session has finished even in this case. + if (LoadedBeatmapSuccessfully) + spectatorClient.EndPlaying(GameplayState); + } } }