No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

TestJobDataHolder.cs 1.9KB

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