summaryrefslogtreecommitdiff
path: root/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/Api/TestRunnerApi.cs
diff options
context:
space:
mode:
authorAndrew Lee <alee14498@protonmail.com>2020-04-19 17:19:32 -0400
committerAndrew Lee <alee14498@protonmail.com>2020-04-19 17:19:32 -0400
commitc55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78 (patch)
treeee4d51c7c1d633e11f46453ef1edd3c77c4ef9f7 /Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/Api/TestRunnerApi.cs
downloadProject-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.tar.gz
Project-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.tar.bz2
Project-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.zip
Inital commit
Diffstat (limited to 'Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/Api/TestRunnerApi.cs')
-rw-r--r--Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/Api/TestRunnerApi.cs120
1 files changed, 120 insertions, 0 deletions
diff --git a/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/Api/TestRunnerApi.cs b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/Api/TestRunnerApi.cs
new file mode 100644
index 0000000..6b14d38
--- /dev/null
+++ b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/Api/TestRunnerApi.cs
@@ -0,0 +1,120 @@
+using System;
+using System.Linq;
+using System.Threading;
+using UnityEditor.TestTools.TestRunner.CommandLineTest;
+using UnityEditor.TestTools.TestRunner.TestRun;
+using UnityEngine;
+using UnityEngine.TestRunner.TestLaunchers;
+using UnityEngine.TestTools;
+using UnityEngine.TestTools.NUnitExtensions;
+
+namespace UnityEditor.TestTools.TestRunner.Api
+{
+ public class TestRunnerApi : ScriptableObject, ITestRunnerApi
+ {
+ internal ICallbacksHolder callbacksHolder;
+
+ private ICallbacksHolder m_CallbacksHolder
+ {
+ get
+ {
+ if (callbacksHolder == null)
+ {
+ return CallbacksHolder.instance;
+ }
+
+ return callbacksHolder;
+ }
+ }
+
+ internal Func<ExecutionSettings,string> ScheduleJob = (executionSettings) =>
+ {
+ var runner = new TestJobRunner();
+ return runner.RunJob(new TestJobData(executionSettings));
+ };
+
+ public string Execute(ExecutionSettings executionSettings)
+ {
+ if (executionSettings == null)
+ {
+ throw new ArgumentNullException(nameof(executionSettings));
+ }
+
+ if ((executionSettings.filters == null || executionSettings.filters.Length == 0) && executionSettings.filter != null)
+ {
+ // Map filter (singular) to filters (plural), for backwards compatibility.
+ executionSettings.filters = new [] {executionSettings.filter};
+ }
+
+ if (executionSettings.targetPlatform == null && executionSettings.filters != null &&
+ executionSettings.filters.Length > 0)
+ {
+ executionSettings.targetPlatform = executionSettings.filters[0].targetPlatform;
+ }
+
+ return ScheduleJob(executionSettings);
+ }
+
+ public void RegisterCallbacks<T>(T testCallbacks, int priority = 0) where T : ICallbacks
+ {
+ if (testCallbacks == null)
+ {
+ throw new ArgumentNullException(nameof(testCallbacks));
+ }
+
+ m_CallbacksHolder.Add(testCallbacks, priority);
+ }
+
+ public void UnregisterCallbacks<T>(T testCallbacks) where T : ICallbacks
+ {
+ if (testCallbacks == null)
+ {
+ throw new ArgumentNullException(nameof(testCallbacks));
+ }
+
+ m_CallbacksHolder.Remove(testCallbacks);
+ }
+
+ internal void RetrieveTestList(ExecutionSettings executionSettings, Action<ITestAdaptor> callback)
+ {
+ if (executionSettings == null)
+ {
+ throw new ArgumentNullException(nameof(executionSettings));
+ }
+
+ var firstFilter = executionSettings.filters?.FirstOrDefault() ?? executionSettings.filter;
+ RetrieveTestList(firstFilter.testMode, callback);
+ }
+
+ public void RetrieveTestList(TestMode testMode, Action<ITestAdaptor> callback)
+ {
+ if (callback == null)
+ {
+ throw new ArgumentNullException(nameof(callback));
+ }
+
+ var platform = ParseTestMode(testMode);
+ var testAssemblyProvider = new EditorLoadedTestAssemblyProvider(new EditorCompilationInterfaceProxy(), new EditorAssembliesProxy());
+ var testAdaptorFactory = new TestAdaptorFactory();
+ var testListCache = new TestListCache(testAdaptorFactory, new RemoteTestResultDataFactory(), TestListCacheData.instance);
+ var testListProvider = new TestListProvider(testAssemblyProvider, new UnityTestAssemblyBuilder());
+ var cachedTestListProvider = new CachingTestListProvider(testListProvider, testListCache, testAdaptorFactory);
+
+ var job = new TestListJob(cachedTestListProvider, platform, (testRoot) =>
+ {
+ callback(testRoot);
+ });
+ job.Start();
+ }
+
+ internal static bool IsRunActive()
+ {
+ return RunData.instance.isRunning;
+ }
+
+ private static TestPlatform ParseTestMode(TestMode testMode)
+ {
+ return (((testMode & TestMode.EditMode) == TestMode.EditMode) ? TestPlatform.EditMode : 0) | (((testMode & TestMode.PlayMode) == TestMode.PlayMode) ? TestPlatform.PlayMode : 0);
+ }
+ }
+}