diff options
Diffstat (limited to 'Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRun/Tasks/BuildTestTreeTask.cs')
| -rw-r--r-- | Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRun/Tasks/BuildTestTreeTask.cs | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRun/Tasks/BuildTestTreeTask.cs b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRun/Tasks/BuildTestTreeTask.cs new file mode 100644 index 0000000..fa45752 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRun/Tasks/BuildTestTreeTask.cs @@ -0,0 +1,61 @@ +using System;
+using System.Collections;
+using System.Linq;
+using UnityEditor.TestTools.TestRunner.Api;
+using UnityEngine.TestRunner.NUnitExtensions;
+using UnityEngine.TestTools;
+using UnityEngine.TestTools.NUnitExtensions;
+
+namespace UnityEditor.TestTools.TestRunner.TestRun.Tasks
+{
+ internal class BuildTestTreeTask : TestTaskBase
+ {
+ private TestPlatform m_TestPlatform;
+
+ public BuildTestTreeTask(TestPlatform testPlatform)
+ {
+ m_TestPlatform = testPlatform;
+ }
+
+ internal IEditorLoadedTestAssemblyProvider m_testAssemblyProvider = new EditorLoadedTestAssemblyProvider(new EditorCompilationInterfaceProxy(), new EditorAssembliesProxy());
+ internal IAsyncTestAssemblyBuilder m_testAssemblyBuilder = new UnityTestAssemblyBuilder();
+ internal ICallbacksDelegator m_CallbacksDelegator = CallbacksDelegator.instance;
+
+ public override IEnumerator Execute(TestJobData testJobData)
+ {
+ if (testJobData.testTree != null)
+ {
+ yield break;
+ }
+
+ var assembliesEnumerator = m_testAssemblyProvider.GetAssembliesGroupedByTypeAsync(m_TestPlatform);
+ while (assembliesEnumerator.MoveNext())
+ {
+ yield return null;
+ }
+
+ if (assembliesEnumerator.Current == null)
+ {
+ throw new Exception("Assemblies not retrieved.");
+ }
+
+ var assemblies = assembliesEnumerator.Current.Where(pair => m_TestPlatform.IsFlagIncluded(pair.Key)).SelectMany(pair => pair.Value).Select(x => x.Assembly).ToArray();
+ var buildSettings = UnityTestAssemblyBuilder.GetNUnitTestBuilderSettings(m_TestPlatform);
+ var enumerator = m_testAssemblyBuilder.BuildAsync(assemblies, Enumerable.Repeat(m_TestPlatform, assemblies.Length).ToArray(), buildSettings);
+ while (enumerator.MoveNext())
+ {
+ yield return null;
+ }
+
+ var testList = enumerator.Current;
+ if (testList== null)
+ {
+ throw new Exception("Test list not retrieved.");
+ }
+
+ testList.ParseForNameDuplicates();
+ testJobData.testTree = testList;
+ m_CallbacksDelegator.TestTreeRebuild(testList);
+ }
+ }
+}
\ No newline at end of file |
