Add HeadlessTestRunner with simulated MultiThreaded mode #1734
Test Results (macOS, SingleThread, Debug) ❌
❌ TestResults-macOS-SingleThread-Debug.trx
3210 tests were completed in 354s with 3127 passed, 4 failed and 79 skipped.
Test suite | Passed | Failed | Skipped | Time |
---|---|---|---|---|
osu.Framework.Tests.Platform.GameHostSuspendTest | 1✔️ | 1❌ | 5s | |
osu.Framework.Tests.Platform.HeadlessGameHostTest | 4✔️ | 1❌ | 11s | |
osu.Framework.Tests.Visual.Testing.TestSceneGlobalStatisticsDisplay | 2❌ | 313ms |
❌ osu.Framework.Tests.Platform.GameHostSuspendTest
❌ TestPauseResume(MultiThreaded)
System.InvalidOperationException : Cannot exit when thread is Paused.
✔️ TestPauseResume(SingleThread)
❌ osu.Framework.Tests.Platform.HeadlessGameHostTest
✔️ TestGameHostDisposalWhenNeverRun
❌ TestGameHostExceptionDuringAsynchronousChildLoad
Expected: <System.InvalidOperationException>
But was: <System.TimeoutException: This GameHost could not start HeadlessGameHostTest+ExceptionDuringAsynchronousLoadTestGame because another GameHost was already running.
at osu.Framework.Platform.GameHost.Run(Game game) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Platform/GameHost.cs:line 707
at osu.Framework.Tests.Platform.HeadlessGameHostTest.<>c__DisplayClass1_0.<TestGameHostExceptionDuringAsynchronousChildLoad>b__0() in /Users/runner/work/osu-framework/osu-framework/osu.Framework.Tests/Platform/HeadlessGameHostTest.cs:line 44
at NUnit.Framework.Assert.Throws(IResolveConstraint expression, TestDelegate code, String message, Object[] args)>
✔️ TestGameHostExceptionDuringSetupHost
✔️ TestIpc
✔️ TestThreadSafetyResetOnEnteringThread
❌ osu.Framework.Tests.Visual.Testing.TestSceneGlobalStatisticsDisplay
❌ TestConstructor
System.AggregateException : One or more errors occurred. (Stack empty.)
----> System.InvalidOperationException : Stack empty.
❌ TestUpdateStats
System.AggregateException : One or more errors occurred. (Stack empty.)
----> System.InvalidOperationException : Stack empty.
Annotations
Check failure on line 244 in osu.Framework/Threading/GameThread.cs
github-actions / Test Results (macOS, SingleThread, Debug)
osu.Framework.Tests.Platform.GameHostSuspendTest ► TestPauseResume(MultiThreaded)
Failed test found in:
TestResults-macOS-SingleThread-Debug.trx
Error:
System.InvalidOperationException : Cannot exit when thread is Paused.
Raw output
System.InvalidOperationException : Cannot exit when thread is Paused.
at osu.Framework.Threading.GameThread.Exit() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Threading/GameThread.cs:line 244
at osu.Framework.Platform.ThreadRunner.Stop() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Platform/ThreadRunner.cs:line 141
at osu.Framework.Platform.GameHost.<performExit>g__exit|164_0() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Platform/GameHost.cs:line 676
at osu.Framework.Threading.Scheduler.Add(Action task, Boolean forceScheduled) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Threading/Scheduler.cs:line 269
at osu.Framework.Platform.GameHost.performExit(Boolean immediately) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Platform/GameHost.cs:line 669
at osu.Framework.Platform.GameHost.PerformExit(Boolean immediately) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Platform/GameHost.cs:line 657
at osu.Framework.Platform.GameHost.Exit() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Platform/GameHost.cs:line 634
at osu.Framework.Game.Exit() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Game.cs:line 469
at osu.Framework.Tests.Platform.GameHostSuspendTest.TestPauseResume(ExecutionMode threadMode) in /Users/runner/work/osu-framework/osu-framework/osu.Framework.Tests/Platform/GameHostSuspendTest.cs:line 82
at InvokeStub_GameHostSuspendTest.TestPauseResume(Object, Span`1)
at System.Reflection.MethodBaseInvoker.InvokeWithOneArg(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
Check failure on line 44 in osu.Framework.Tests/Platform/HeadlessGameHostTest.cs
github-actions / Test Results (macOS, SingleThread, Debug)
osu.Framework.Tests.Platform.HeadlessGameHostTest ► TestGameHostExceptionDuringAsynchronousChildLoad
Failed test found in:
TestResults-macOS-SingleThread-Debug.trx
Error:
Expected: <System.InvalidOperationException>
But was: <System.TimeoutException: This GameHost could not start HeadlessGameHostTest+ExceptionDuringAsynchronousLoadTestGame because another GameHost was already running.
at osu.Framework.Platform.GameHost.Run(Game game) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Platform/GameHost.cs:line 707
at osu.Framework.Tests.Platform.HeadlessGameHostTest.<>c__DisplayClass1_0.<TestGameHostExceptionDuringAsynchronousChildLoad>b__0() in /Users/runner/work/osu-framework/osu-framework/osu.Framework.Tests/Platform/HeadlessGameHostTest.cs:line 44
at NUnit.Framework.Assert.Throws(IResolveConstraint expression, TestDelegate code, String message, Object[] args)>
Raw output
Expected: <System.InvalidOperationException>
But was: <System.TimeoutException: This GameHost could not start HeadlessGameHostTest+ExceptionDuringAsynchronousLoadTestGame because another GameHost was already running.
at osu.Framework.Platform.GameHost.Run(Game game) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Platform/GameHost.cs:line 707
at osu.Framework.Tests.Platform.HeadlessGameHostTest.<>c__DisplayClass1_0.<TestGameHostExceptionDuringAsynchronousChildLoad>b__0() in /Users/runner/work/osu-framework/osu-framework/osu.Framework.Tests/Platform/HeadlessGameHostTest.cs:line 44
at NUnit.Framework.Assert.Throws(IResolveConstraint expression, TestDelegate code, String message, Object[] args)>
at osu.Framework.Tests.Platform.HeadlessGameHostTest.TestGameHostExceptionDuringAsynchronousChildLoad() in /Users/runner/work/osu-framework/osu-framework/osu.Framework.Tests/Platform/HeadlessGameHostTest.cs:line 44
1) at osu.Framework.Tests.Platform.HeadlessGameHostTest.TestGameHostExceptionDuringAsynchronousChildLoad() in /Users/runner/work/osu-framework/osu-framework/osu.Framework.Tests/Platform/HeadlessGameHostTest.cs:line 44
Check failure on line 502 in osu.Framework/Testing/TestScene.cs
github-actions / Test Results (macOS, SingleThread, Debug)
osu.Framework.Tests.Visual.Testing.TestSceneGlobalStatisticsDisplay ► TestConstructor
Failed test found in:
TestResults-macOS-SingleThread-Debug.trx
Error:
System.AggregateException : One or more errors occurred. (Stack empty.)
----> System.InvalidOperationException : Stack empty.
Raw output
System.AggregateException : One or more errors occurred. (Stack empty.)
----> System.InvalidOperationException : Stack empty.
at osu.Framework.Testing.TestScene.checkForErrors() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Testing/TestScene.cs:line 502
at osu.Framework.Testing.TestScene.UseTestSceneRunnerAttribute.AfterTest(ITest test) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Testing/TestScene.cs:line 565
at NUnit.Framework.Internal.Commands.TestActionCommand.<>c__DisplayClass0_0.<.ctor>b__1(TestExecutionContext context)
at NUnit.Framework.Internal.Commands.BeforeAndAfterTestCommand.<>c__DisplayClass1_0.<Execute>b__1()
at NUnit.Framework.Internal.Commands.DelegatingTestCommand.RunTestMethodInThreadAbortSafeZone(TestExecutionContext context, Action action)
--InvalidOperationException
at System.Collections.Generic.Stack`1.ThrowForEmptyStack()
at System.Collections.Generic.Stack`1.Pop()
at osu.Framework.Statistics.TypePerformanceMonitor.EndCollecting(Object obj) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Statistics/TypePerformanceMonitor.cs:line 56
at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 929
at osu.Framework.Graphics.Containers.CompositeDrawable.updateChild(Drawable c) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 954
at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 928
at osu.Framework.Graphics.Containers.CompositeDrawable.updateChild(Drawable c) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 954
at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 928
at osu.Framework.Graphics.Containers.CompositeDrawable.updateChild(Drawable c) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 954
at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 928
at osu.Framework.Graphics.Containers.CompositeDrawable.updateChild(Drawable c) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 954
at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 928
at osu.Framework.Graphics.Containers.CompositeDrawable.updateChild(Drawable c) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 954
at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 935
at osu.Framework.Graphics.Containers.CompositeDrawable.updateChild(Drawable c) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 954
at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 935
at osu.Framework.Graphics.Containers.CompositeDrawable.updateChild(Drawable c) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 954
at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 935
at osu.Framework.Graphics.Containers.CompositeDrawable.updateChild(Drawable c) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 954
at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 935
at osu.Framework.Graphics.Containers.CompositeDrawable.updateChild(Drawable c) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 954
at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 935
at osu.Framework.Graphics.Containers.CompositeDrawable.updateChild(Drawable c) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 954
at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 935
at osu.Framework.Graphics.Containers.CompositeDrawable.updateChild(Drawable c) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 954
at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 935
at osu.Framework.Platform.GameHost.UpdateFrame() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Platform/GameHost.cs:line 481
at osu.Framework.Platform.HeadlessGameHost.UpdateFrame() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Platform/HeadlessGameHost.cs:line 105
at osu.Framework.Threading.GameThread.processFrame() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Threading/GameThread.cs:line 458
--- End of stack trace from previous location ---
at osu.Framework.Platform.GameHost.<>c__DisplayClass141_0.<abortExecutionFromException>b__0() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Platform/GameHost.cs:line 419
at osu.Framework.Threading.ScheduledDelegate.InvokeTask() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Threading/ScheduledDelegate.cs:line 106
at osu.Framework.Threading.ScheduledDelegate.RunTaskInternal() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Threading/ScheduledDelegate.cs:line 92
at osu.Framework.Threading.Scheduler.Update() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Threading/Scheduler.cs:line 124
at osu.Framework.Threading.GameThread.processFrame() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Threading/GameThread.cs:line 453
at osu.Framework.Threading.GameThread.RunSingleFrame() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Threading/GameThread.cs:line 298
at osu.Framework.Platform.ThreadRunner.RunMainLoop() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Platform/ThreadRunner.cs:line 100
at osu.Framework.Testing.HeadlessThreadRunner.RunMainLoop() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Testing/HeadlessThreadRunner.cs:line 22
at osu.Framework.Platform.GameHost.windowUpdate() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Platform/GameHost.cs:line 1129
at osu.Framework.Platform.GameHost.Run(Game game) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Platform/GameHost.cs:line 806
at osu.Framework.Testing.TestScene.<>c__DisplayClass50_0.<SetupGameHostForNUnit>b__0() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Testing/TestScene.cs:line 459
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
Check failure on line 502 in osu.Framework/Testing/TestScene.cs
github-actions / Test Results (macOS, SingleThread, Debug)
osu.Framework.Tests.Visual.Testing.TestSceneGlobalStatisticsDisplay ► TestUpdateStats
Failed test found in:
TestResults-macOS-SingleThread-Debug.trx
Error:
System.AggregateException : One or more errors occurred. (Stack empty.)
----> System.InvalidOperationException : Stack empty.
Raw output
System.AggregateException : One or more errors occurred. (Stack empty.)
----> System.InvalidOperationException : Stack empty.
at osu.Framework.Testing.TestScene.checkForErrors() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Testing/TestScene.cs:line 502
at osu.Framework.Testing.TestScene.UseTestSceneRunnerAttribute.AfterTest(ITest test) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Testing/TestScene.cs:line 563
at NUnit.Framework.Internal.Commands.TestActionCommand.<>c__DisplayClass0_0.<.ctor>b__1(TestExecutionContext context)
at NUnit.Framework.Internal.Commands.BeforeAndAfterTestCommand.<>c__DisplayClass1_0.<Execute>b__1()
at NUnit.Framework.Internal.Commands.DelegatingTestCommand.RunTestMethodInThreadAbortSafeZone(TestExecutionContext context, Action action)
--InvalidOperationException
at System.Collections.Generic.Stack`1.ThrowForEmptyStack()
at System.Collections.Generic.Stack`1.Pop()
at osu.Framework.Statistics.TypePerformanceMonitor.EndCollecting(Object obj) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Statistics/TypePerformanceMonitor.cs:line 56
at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 929
at osu.Framework.Graphics.Containers.CompositeDrawable.updateChild(Drawable c) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 954
at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 928
at osu.Framework.Graphics.Containers.CompositeDrawable.updateChild(Drawable c) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 954
at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 928
at osu.Framework.Graphics.Containers.CompositeDrawable.updateChild(Drawable c) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 954
at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 928
at osu.Framework.Graphics.Containers.CompositeDrawable.updateChild(Drawable c) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 954
at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 928
at osu.Framework.Graphics.Containers.CompositeDrawable.updateChild(Drawable c) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 954
at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 935
at osu.Framework.Graphics.Containers.CompositeDrawable.updateChild(Drawable c) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 954
at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 935
at osu.Framework.Graphics.Containers.CompositeDrawable.updateChild(Drawable c) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 954
at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 935
at osu.Framework.Graphics.Containers.CompositeDrawable.updateChild(Drawable c) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 954
at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 935
at osu.Framework.Graphics.Containers.CompositeDrawable.updateChild(Drawable c) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 954
at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 935
at osu.Framework.Graphics.Containers.CompositeDrawable.updateChild(Drawable c) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 954
at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 935
at osu.Framework.Graphics.Containers.CompositeDrawable.updateChild(Drawable c) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 954
at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Graphics/Containers/CompositeDrawable.cs:line 935
at osu.Framework.Platform.GameHost.UpdateFrame() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Platform/GameHost.cs:line 481
at osu.Framework.Platform.HeadlessGameHost.UpdateFrame() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Platform/HeadlessGameHost.cs:line 105
at osu.Framework.Threading.GameThread.processFrame() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Threading/GameThread.cs:line 458
--- End of stack trace from previous location ---
at osu.Framework.Platform.GameHost.<>c__DisplayClass141_0.<abortExecutionFromException>b__0() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Platform/GameHost.cs:line 419
at osu.Framework.Threading.ScheduledDelegate.InvokeTask() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Threading/ScheduledDelegate.cs:line 106
at osu.Framework.Threading.ScheduledDelegate.RunTaskInternal() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Threading/ScheduledDelegate.cs:line 92
at osu.Framework.Threading.Scheduler.Update() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Threading/Scheduler.cs:line 124
at osu.Framework.Threading.GameThread.processFrame() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Threading/GameThread.cs:line 453
at osu.Framework.Threading.GameThread.RunSingleFrame() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Threading/GameThread.cs:line 298
at osu.Framework.Platform.ThreadRunner.RunMainLoop() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Platform/ThreadRunner.cs:line 100
at osu.Framework.Testing.HeadlessThreadRunner.RunMainLoop() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Testing/HeadlessThreadRunner.cs:line 22
at osu.Framework.Platform.GameHost.windowUpdate() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Platform/GameHost.cs:line 1129
at osu.Framework.Platform.GameHost.Run(Game game) in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Platform/GameHost.cs:line 806
at osu.Framework.Testing.TestScene.<>c__DisplayClass50_0.<SetupGameHostForNUnit>b__0() in /Users/runner/work/osu-framework/osu-framework/osu.Framework/Testing/TestScene.cs:line 459
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)