67 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| 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();
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 |