12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- using System;
- using System.Collections;
- using System.Linq;
- using UnityEngine;
- using UnityEngine.TestRunner.NUnitExtensions.Runner;
- using UnityEngine.TestTools.TestRunner;
-
- namespace UnityEditor.TestTools.TestRunner.TestRun.Tasks
- {
- internal class PlayModeRunTask : TestTaskBase
- {
- public PlayModeRunTask()
- {
- SupportsResumingEnumerator = true;
- }
- public override IEnumerator Execute(TestJobData testJobData)
- {
- yield return null; // Allow for setting the test job data after a resume.
-
- // Saving of the scene causes serialization of the runner, so the events needs to be resubscribed. This is temporary for now.
- // Wait for the active controller
- while (PlaymodeTestsController.ActiveController == null)
- {
- yield return null;
- }
-
- var controller = PlaymodeTestsController.ActiveController;
-
- if (controller.m_Runner != null && controller.m_Runner.IsTestComplete)
- {
- //Already finished, likely zero tests.
- testJobData.RunStartedEvent.Invoke(controller.m_Runner.LoadedTest);
- testJobData.RunFinishedEvent.Invoke(controller.m_Runner.Result);
- yield break;
- }
-
- controller.runStartedEvent.AddListener(testJobData.RunStartedEvent.Invoke);
- controller.testStartedEvent.AddListener(testJobData.TestStartedEvent.Invoke);
- controller.testFinishedEvent.AddListener(testJobData.TestFinishedEvent.Invoke);
- controller.runFinishedEvent.AddListener(testJobData.RunFinishedEvent.Invoke);
-
- controller.RunInfrastructureHasRegistered = true;
-
- var runDone = false;
- controller.runFinishedEvent.AddListener((_) =>
- {
- runDone = true;
- });
-
- while (!runDone)
- {
- yield return null;
- }
-
- yield return null;
- }
- }
- }
|