A game about forced loneliness, made by TACStudios
1using System; 2using System.Collections; 3using System.Linq; 4using UnityEditor.TestTools.TestRunner.Api; 5using UnityEngine.TestTools; 6using UnityEngine.TestTools.NUnitExtensions; 7 8namespace UnityEditor.TestTools.TestRunner.TestRun.Tasks 9{ 10 internal class BuildTestTreeTask : TestTaskBase 11 { 12 private TestPlatform m_TestPlatform; 13 14 public BuildTestTreeTask(TestPlatform testPlatform) 15 { 16 m_TestPlatform = testPlatform; 17 RerunAfterResume = true; 18 } 19 20 internal IEditorLoadedTestAssemblyProvider m_testAssemblyProvider = new EditorLoadedTestAssemblyProvider(new EditorCompilationInterfaceProxy(), new EditorAssembliesProxy()); 21 internal Func<string[], int, IAsyncTestAssemblyBuilder> m_testAssemblyBuilderFactory = (orderedTestNames, seed) => new UnityTestAssemblyBuilder(orderedTestNames, seed); 22 internal ICallbacksDelegator m_CallbacksDelegator = CallbacksDelegator.instance; 23 24 public override IEnumerator Execute(TestJobData testJobData) 25 { 26 if (testJobData.testTree != null) 27 { 28 yield break; 29 } 30 31 var assembliesEnumerator = m_testAssemblyProvider.GetAssembliesGroupedByTypeAsync(m_TestPlatform); 32 while (assembliesEnumerator.MoveNext()) 33 { 34 yield return null; 35 } 36 37 if (assembliesEnumerator.Current == null) 38 { 39 throw new Exception("Assemblies not retrieved."); 40 } 41 42 var assemblies = assembliesEnumerator.Current.Where(pair => m_TestPlatform.IsFlagIncluded(pair.Key)).SelectMany(pair => pair.Value).Select(x => x.Assembly).ToArray(); 43 var buildSettings = UnityTestAssemblyBuilder.GetNUnitTestBuilderSettings(m_TestPlatform); 44 var testAssemblyBuilder = m_testAssemblyBuilderFactory(testJobData.executionSettings.orderedTestNames, testJobData.executionSettings.randomOrderSeed); 45 var enumerator = testAssemblyBuilder.BuildAsync(assemblies, Enumerable.Repeat(m_TestPlatform, assemblies.Length).ToArray(), buildSettings); 46 while (enumerator.MoveNext()) 47 { 48 yield return null; 49 } 50 51 var testList = enumerator.Current; 52 if (testList== null) 53 { 54 throw new Exception("Test list not retrieved."); 55 } 56 57 testJobData.testTree = testList; 58 m_CallbacksDelegator.TestTreeRebuild(testList); 59 } 60 } 61}