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();
|
|
}
|
|
}
|
|
}
|
|
}
|