A game about forced loneliness, made by TACStudios
1using System;
2using System.Collections;
3using UnityEngine;
4
5namespace UnityEditor.TestTools.TestRunner.TestRun.Tasks
6{
7 internal class EditModeRunTask : TestTaskBase
8 {
9 public EditModeRunTask()
10 {
11 SupportsResumingEnumerator = true;
12 RerunAfterResume = true;
13 }
14
15 public override IEnumerator Execute(TestJobData testJobData)
16 {
17 if (testJobData.taskInfoStack.Peek().taskMode == TaskMode.Canceled)
18 {
19 var runner = testJobData.editModeRunner;
20 if (runner != null)
21 {
22 runner.OnRunCancel();
23 }
24 yield break;
25 }
26 else if (testJobData.taskInfoStack.Peek().taskMode == TaskMode.Resume)
27 {
28 var runner = testJobData.editModeRunner;
29 if (runner == null)
30 {
31 yield break;
32 }
33
34 runner.Resume(testJobData.executionSettings.BuildNUnitFilter(), testJobData.testTree, testJobData.TestStartedEvent, testJobData.TestFinishedEvent, testJobData.Context);
35 yield break;
36 }
37
38 yield return null; // Allow for setting the test job data after a resume.
39 var editModeRunner = ScriptableObject.CreateInstance<EditModeRunner>();
40 testJobData.editModeRunner = editModeRunner;
41
42 editModeRunner.UnityTestAssemblyRunnerFactory = new UnityTestAssemblyRunnerFactory();
43 editModeRunner.Init(testJobData.executionSettings.BuildNUnitFilter(), testJobData.executionSettings.runSynchronously, testJobData.testTree, testJobData.TestStartedEvent,
44 testJobData.TestFinishedEvent, testJobData.Context, testJobData.executionSettings.orderedTestNames, testJobData.executionSettings.randomOrderSeed, testJobData.executionSettings.featureFlags.disableNestedEnumeratorBugfix);
45
46 while (testJobData.editModeRunner != null && !testJobData.editModeRunner.RunFinished)
47 {
48 testJobData.editModeRunner.TestConsumer(testJobData.testRunnerStateSerializer);
49 yield return null;
50 }
51
52 testJobData.TestResults = testJobData.editModeRunner.m_Runner.Result;
53 }
54 }
55}