A game about forced loneliness, made by TACStudios
1using System; 2using System.Collections; 3using System.Linq; 4using UnityEngine; 5using UnityEngine.TestRunner.NUnitExtensions.Runner; 6using UnityEngine.TestTools.TestRunner; 7 8namespace UnityEditor.TestTools.TestRunner.TestRun.Tasks 9{ 10 internal class PlayModeRunTask : TestTaskBase 11 { 12 public PlayModeRunTask() 13 { 14 SupportsResumingEnumerator = true; 15 } 16 public override IEnumerator Execute(TestJobData testJobData) 17 { 18 yield return null; // Allow for setting the test job data after a resume. 19 20 // Saving of the scene causes serialization of the runner, so the events needs to be resubscribed. This is temporary for now. 21 // Wait for the active controller 22 while (PlaymodeTestsController.ActiveController == null) 23 { 24 yield return null; 25 } 26 27 var controller = PlaymodeTestsController.ActiveController; 28 29 if (controller.m_Runner != null && controller.m_Runner.IsTestComplete) 30 { 31 //Already finished, likely zero tests. 32 testJobData.RunStartedEvent.Invoke(controller.m_Runner.LoadedTest); 33 testJobData.RunFinishedEvent.Invoke(controller.m_Runner.Result); 34 yield break; 35 } 36 37 controller.runStartedEvent.AddListener(testJobData.RunStartedEvent.Invoke); 38 controller.testStartedEvent.AddListener(testJobData.TestStartedEvent.Invoke); 39 controller.testFinishedEvent.AddListener(testJobData.TestFinishedEvent.Invoke); 40 controller.runFinishedEvent.AddListener(testJobData.RunFinishedEvent.Invoke); 41 42 controller.RunInfrastructureHasRegistered = true; 43 44 var runDone = false; 45 controller.runFinishedEvent.AddListener((_) => 46 { 47 runDone = true; 48 }); 49 50 while (!runDone) 51 { 52 if (controller.RaisedException != null) 53 { 54 throw controller.RaisedException; 55 } 56 yield return null; 57 } 58 59 yield return null; 60 } 61 } 62}