A game about forced loneliness, made by TACStudios
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using UnityEngine;
5
6namespace UnityEditor.TestTools.TestRunner.TestRun
7{
8 internal class TestJobDataHolder : ScriptableSingleton<TestJobDataHolder>, ITestJobDataHolder
9 {
10 [SerializeField]
11 public List<TestJobData> TestRuns = new List<TestJobData>();
12
13 [NonSerialized]
14 private readonly Dictionary<string, ITestJobRunner> m_Runners = new Dictionary<string, ITestJobRunner>();
15
16 public void RegisterRun(ITestJobRunner runner, TestJobData data)
17 {
18 TestRuns.Add(data);
19 m_Runners.Add(data.guid, runner);
20 }
21
22 public void UnregisterRun(ITestJobRunner runner, TestJobData data)
23 {
24 TestRuns.Remove(data);
25 m_Runners.Remove(data.guid);
26 }
27
28 public ITestJobRunner GetRunner(string guid)
29 {
30 return m_Runners.ContainsKey(guid) ? m_Runners[guid] : null;
31 }
32
33 public ITestJobRunner[] GetAllRunners()
34 {
35 return m_Runners.Values.ToArray();
36 }
37
38 [InitializeOnLoadMethod]
39 private static void ResumeRunningJobs()
40 {
41 try
42 {
43 foreach (var testRun in instance.TestRuns.ToArray())
44 {
45 if (testRun.isRunning)
46 {
47 var runner = new TestJobRunner();
48 runner.RunJob(testRun);
49 instance.m_Runners[testRun.guid] = runner;
50 }
51 else
52 {
53 instance.TestRuns.Remove(testRun);
54 }
55 }
56 }
57 catch (Exception ex)
58 {
59 Debug.LogException(ex);
60 EditorUtility.ClearProgressBar();
61 EditorApplication.UnlockReloadAssemblies();
62 instance.TestRuns.Clear();
63 }
64 }
65 }
66}