123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using UnityEngine;
-
- namespace UnityEditor.TestTools.TestRunner.TestRun
- {
- internal class TestJobDataHolder : ScriptableSingleton<TestJobDataHolder>, ITestJobDataHolder
- {
- [SerializeField]
- public List<TestJobData> TestRuns = new List<TestJobData>();
-
- [NonSerialized]
- private readonly Dictionary<string, ITestJobRunner> m_Runners = new Dictionary<string, ITestJobRunner>();
-
- public void RegisterRun(ITestJobRunner runner, TestJobData data)
- {
- TestRuns.Add(data);
- m_Runners.Add(data.guid, runner);
- }
-
- public void UnregisterRun(ITestJobRunner runner, TestJobData data)
- {
- TestRuns.Remove(data);
- m_Runners.Remove(data.guid);
- }
-
- public ITestJobRunner GetRunner(string guid)
- {
- return m_Runners.ContainsKey(guid) ? m_Runners[guid] : null;
- }
-
- public ITestJobRunner[] GetAllRunners()
- {
- return m_Runners.Values.ToArray();
- }
-
- [InitializeOnLoadMethod]
- private static void ResumeRunningJobs()
- {
- try
- {
- foreach (var testRun in instance.TestRuns.ToArray())
- {
- if (testRun.isRunning)
- {
- var runner = new TestJobRunner();
- runner.RunJob(testRun);
- instance.m_Runners[testRun.guid] = runner;
- }
- else
- {
- instance.TestRuns.Remove(testRun);
- }
- }
- }
- catch (Exception ex)
- {
- Debug.LogException(ex);
- EditorUtility.ClearProgressBar();
- EditorApplication.UnlockReloadAssemblies();
- instance.TestRuns.Clear();
- }
- }
- }
- }
|