summaryrefslogtreecommitdiff
path: root/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks
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/TestRunner/Callbacks
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/TestRunner/Callbacks')
-rw-r--r--Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/EditModeRunnerCallback.cs178
-rw-r--r--Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/EditModeRunnerCallback.cs.meta11
-rw-r--r--Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallback.cs86
-rw-r--r--Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallback.cs.meta11
-rw-r--r--Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallbackData.cs15
-rw-r--r--Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallbackData.cs.meta11
-rw-r--r--Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallbackInitializer.cs17
-rw-r--r--Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallbackInitializer.cs.meta11
-rw-r--r--Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/TestRunnerCallback.cs37
-rw-r--r--Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/TestRunnerCallback.cs.meta11
-rw-r--r--Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/WindowResultUpdater.cs44
-rw-r--r--Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/WindowResultUpdater.cs.meta11
12 files changed, 443 insertions, 0 deletions
diff --git a/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/EditModeRunnerCallback.cs b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/EditModeRunnerCallback.cs
new file mode 100644
index 0000000..7d026fa
--- /dev/null
+++ b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/EditModeRunnerCallback.cs
@@ -0,0 +1,178 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using NUnit.Framework;
+using NUnit.Framework.Interfaces;
+using NUnit.Framework.Internal;
+using UnityEditor.SceneManagement;
+using UnityEngine;
+using UnityEngine.TestTools.TestRunner;
+
+namespace UnityEditor.TestTools.TestRunner
+{
+ internal class EditModeRunnerCallback : ScriptableObject, ITestRunnerListener
+ {
+ private EditModeLauncherContextSettings m_Settings;
+ public SceneSetup[] previousSceneSetup;
+ public EditModeRunner runner;
+
+ private bool m_Canceled;
+ private ITest m_CurrentTest;
+ private int m_TotalTests;
+
+ [SerializeField]
+ private List<string> m_PendingTests;
+ [SerializeField]
+ private string m_LastCountedTestName;
+ [SerializeField]
+ private bool m_RunRestarted;
+
+ public void OnDestroy()
+ {
+ CleanUp();
+ }
+
+ public void RunStarted(ITest testsToRun)
+ {
+ Setup();
+ if (m_PendingTests == null)
+ {
+ m_PendingTests = GetTestsExpectedToRun(testsToRun, runner.GetFilter());
+ m_TotalTests = m_PendingTests.Count;
+ }
+ }
+
+ public void OnEnable()
+ {
+ if (m_RunRestarted)
+ {
+ Setup();
+ }
+ }
+
+ private void Setup()
+ {
+ m_Settings = new EditModeLauncherContextSettings();
+ Application.logMessageReceivedThreaded += LogReceived;
+ EditorApplication.playModeStateChanged += WaitForExitPlaymode;
+ EditorApplication.update += DisplayProgressBar;
+ AssemblyReloadEvents.beforeAssemblyReload += BeforeAssemblyReload;
+ }
+
+ private void BeforeAssemblyReload()
+ {
+ if (m_CurrentTest != null)
+ {
+ m_LastCountedTestName = m_CurrentTest.FullName;
+ m_RunRestarted = true;
+ }
+ }
+
+ private void DisplayProgressBar()
+ {
+ if (m_CurrentTest == null)
+ return;
+ if (!m_Canceled && EditorUtility.DisplayCancelableProgressBar("Test Runner", "Running test " + m_CurrentTest.Name, Math.Min(1.0f, (float)(m_TotalTests - m_PendingTests.Count) / m_TotalTests)))
+ {
+ EditorApplication.update -= DisplayProgressBar;
+ m_Canceled = true;
+ EditorUtility.ClearProgressBar();
+ runner.OnRunCancel();
+ }
+ }
+
+ private static void LogReceived(string message, string stacktrace, LogType type)
+ {
+ if (TestContext.Out != null)
+ TestContext.Out.WriteLine(message);
+ }
+
+ private static void WaitForExitPlaymode(PlayModeStateChange state)
+ {
+ if (state == PlayModeStateChange.EnteredEditMode)
+ {
+ EditorApplication.playModeStateChanged -= WaitForExitPlaymode;
+ //because logMessage is reset on Enter EditMode
+ //we remove and add the callback
+ //because Unity
+ Application.logMessageReceivedThreaded -= LogReceived;
+ Application.logMessageReceivedThreaded += LogReceived;
+ }
+ }
+
+ public void RunFinished(ITestResult result)
+ {
+ if (previousSceneSetup != null && previousSceneSetup.Length > 0)
+ {
+ try
+ {
+ EditorSceneManager.RestoreSceneManagerSetup(previousSceneSetup);
+ }
+ catch (ArgumentException e)
+ {
+ Debug.LogWarning(e.Message);
+ }
+ }
+ else
+ {
+ EditorSceneManager.NewScene(NewSceneSetup.DefaultGameObjects, NewSceneMode.Single);
+ }
+ CleanUp();
+ }
+
+ private void CleanUp()
+ {
+ m_CurrentTest = null;
+ EditorUtility.ClearProgressBar();
+ if (m_Settings != null)
+ {
+ m_Settings.Dispose();
+ }
+ Application.logMessageReceivedThreaded -= LogReceived;
+ EditorApplication.update -= DisplayProgressBar;
+ }
+
+ public void TestStarted(ITest test)
+ {
+ if (test.IsSuite || !(test is TestMethod))
+ {
+ return;
+ }
+
+ m_CurrentTest = test;
+
+ if (m_RunRestarted)
+ {
+ if (test.FullName == m_LastCountedTestName)
+ m_RunRestarted = false;
+ }
+ }
+
+ public void TestFinished(ITestResult result)
+ {
+ if (result.Test is TestMethod)
+ {
+ m_PendingTests.Remove(result.Test.FullName);
+ }
+ }
+
+ private static List<string> GetTestsExpectedToRun(ITest test, ITestFilter filter)
+ {
+ var expectedTests = new List<string>();
+
+ if (filter.Pass(test))
+ {
+ if (test.IsSuite)
+ {
+ expectedTests.AddRange(test.Tests.SelectMany(subTest => GetTestsExpectedToRun(subTest, filter)));
+ }
+ else
+ {
+ expectedTests.Add(test.FullName);
+ }
+ }
+
+ return expectedTests;
+ }
+ }
+}
diff --git a/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/EditModeRunnerCallback.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/EditModeRunnerCallback.cs.meta
new file mode 100644
index 0000000..5c5501b
--- /dev/null
+++ b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/EditModeRunnerCallback.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: cc456ba93311a3a43ad896449fee9868
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallback.cs b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallback.cs
new file mode 100644
index 0000000..2515ea7
--- /dev/null
+++ b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallback.cs
@@ -0,0 +1,86 @@
+using UnityEditor.TestTools.TestRunner.Api;
+using UnityEditor.TestTools.TestRunner.CommandLineTest;
+using UnityEngine.TestTools.TestRunner.GUI;
+using UnityEngine;
+
+namespace UnityEditor.TestTools.TestRunner
+{
+ internal class RerunCallback : ScriptableObject, ICallbacks
+ {
+ public static bool useMockRunFilter = false;
+ public static TestRunnerFilter mockRunFilter = null;
+
+ public void RunFinished(ITestResultAdaptor result)
+ {
+ if (RerunCallbackData.instance.runFilters == null || RerunCallbackData.instance.runFilters.Length == 0)
+ RerunCallbackData.instance.runFilters = new[] {new TestRunnerFilter()};
+
+ var runFilter = RerunCallbackData.instance.runFilters[0];
+
+ if (useMockRunFilter)
+ {
+ runFilter = mockRunFilter;
+ }
+
+ runFilter.testRepetitions--;
+ if (runFilter.testRepetitions <= 0 || result.TestStatus != TestStatus.Passed)
+ {
+ ExitCallbacks.preventExit = false;
+ return;
+ }
+
+ ExitCallbacks.preventExit = true;
+ if (EditorApplication.isPlaying)
+ {
+ EditorApplication.playModeStateChanged += WaitForExitPlaymode;
+ return;
+ }
+
+ if (!useMockRunFilter)
+ {
+ ExecuteTestRunnerAPI();
+ }
+ }
+
+ private static void WaitForExitPlaymode(PlayModeStateChange state)
+ {
+ if (state == PlayModeStateChange.EnteredEditMode)
+ {
+ ExecuteTestRunnerAPI();
+ }
+ }
+
+ private static void ExecuteTestRunnerAPI()
+ {
+ var runFilter = RerunCallbackData.instance.runFilters[0];
+ var testMode = RerunCallbackData.instance.testMode;
+
+ var testRunnerApi = ScriptableObject.CreateInstance<TestRunnerApi>();
+ testRunnerApi.Execute(new Api.ExecutionSettings()
+ {
+ filters = new[]
+ {
+ new Filter()
+ {
+ categoryNames = runFilter.categoryNames,
+ groupNames = runFilter.groupNames,
+ testMode = testMode,
+ testNames = runFilter.testNames
+ }
+ }
+ });
+ }
+
+ public void TestStarted(ITestAdaptor test)
+ {
+ }
+
+ public void TestFinished(ITestResultAdaptor result)
+ {
+ }
+
+ public void RunStarted(ITestAdaptor testsToRun)
+ {
+ }
+ }
+}
diff --git a/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallback.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallback.cs.meta
new file mode 100644
index 0000000..b4fc0e2
--- /dev/null
+++ b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallback.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b7ff2b2e91321ff4381d4ab45870a32e
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallbackData.cs b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallbackData.cs
new file mode 100644
index 0000000..8aeeeec
--- /dev/null
+++ b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallbackData.cs
@@ -0,0 +1,15 @@
+using UnityEditor.TestTools.TestRunner.Api;
+using UnityEngine;
+using UnityEngine.TestTools.TestRunner.GUI;
+
+namespace UnityEditor.TestTools.TestRunner
+{
+ internal class RerunCallbackData : ScriptableSingleton<RerunCallbackData>
+ {
+ [SerializeField]
+ internal TestRunnerFilter[] runFilters;
+
+ [SerializeField]
+ internal TestMode testMode;
+ }
+}
diff --git a/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallbackData.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallbackData.cs.meta
new file mode 100644
index 0000000..bc911fe
--- /dev/null
+++ b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallbackData.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 087cba9fa6ac867479a0b0fdc0a5864b
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallbackInitializer.cs b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallbackInitializer.cs
new file mode 100644
index 0000000..86be497
--- /dev/null
+++ b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallbackInitializer.cs
@@ -0,0 +1,17 @@
+using UnityEngine;
+using UnityEditor.TestTools.TestRunner.Api;
+
+namespace UnityEditor.TestTools.TestRunner
+{
+ [InitializeOnLoad]
+ static class RerunCallbackInitializer
+ {
+ static RerunCallbackInitializer()
+ {
+ var testRunnerApi = ScriptableObject.CreateInstance<TestRunnerApi>();
+
+ var rerunCallback = ScriptableObject.CreateInstance<RerunCallback>();
+ testRunnerApi.RegisterCallbacks<RerunCallback>(rerunCallback);
+ }
+ }
+}
diff --git a/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallbackInitializer.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallbackInitializer.cs.meta
new file mode 100644
index 0000000..1f50bcc
--- /dev/null
+++ b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallbackInitializer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f73fc901e4b0f2d4daf11f46506054ba
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/TestRunnerCallback.cs b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/TestRunnerCallback.cs
new file mode 100644
index 0000000..6e89c21
--- /dev/null
+++ b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/TestRunnerCallback.cs
@@ -0,0 +1,37 @@
+using NUnit.Framework.Interfaces;
+using UnityEngine;
+using UnityEngine.TestTools.TestRunner;
+
+namespace UnityEditor.TestTools.TestRunner
+{
+ internal class TestRunnerCallback : ScriptableObject, ITestRunnerListener
+ {
+ public void RunStarted(ITest testsToRun)
+ {
+ EditorApplication.playModeStateChanged += OnPlayModeStateChanged;
+ }
+
+ private void OnPlayModeStateChanged(PlayModeStateChange state)
+ {
+ if (state == PlayModeStateChange.ExitingPlayMode)
+ {
+ EditorApplication.playModeStateChanged -= OnPlayModeStateChanged;
+ //We need to make sure we don't block NUnit thread in case we exit PlayMode earlier
+ PlaymodeTestsController.TryCleanup();
+ }
+ }
+
+ public void RunFinished(ITestResult testResults)
+ {
+ EditorApplication.isPlaying = false;
+ }
+
+ public void TestStarted(ITest testName)
+ {
+ }
+
+ public void TestFinished(ITestResult test)
+ {
+ }
+ }
+}
diff --git a/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/TestRunnerCallback.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/TestRunnerCallback.cs.meta
new file mode 100644
index 0000000..a592975
--- /dev/null
+++ b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/TestRunnerCallback.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d44e6804bc58be84ea71a619b468f150
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/WindowResultUpdater.cs b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/WindowResultUpdater.cs
new file mode 100644
index 0000000..831d769
--- /dev/null
+++ b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/WindowResultUpdater.cs
@@ -0,0 +1,44 @@
+using UnityEditor.TestTools.TestRunner.Api;
+
+namespace UnityEditor.TestTools.TestRunner.GUI
+{
+ internal class WindowResultUpdater : ICallbacks, ITestTreeRebuildCallbacks
+ {
+ public void RunStarted(ITestAdaptor testsToRun)
+ {
+ }
+
+ public void RunFinished(ITestResultAdaptor testResults)
+ {
+ if (TestRunnerWindow.s_Instance != null)
+ {
+ TestRunnerWindow.s_Instance.RebuildUIFilter();
+ }
+ }
+
+ public void TestStarted(ITestAdaptor testName)
+ {
+ }
+
+ public void TestFinished(ITestResultAdaptor test)
+ {
+ if (TestRunnerWindow.s_Instance == null)
+ {
+ return;
+ }
+
+ var result = new TestRunnerResult(test);
+ TestRunnerWindow.s_Instance.m_SelectedTestTypes.UpdateResult(result);
+ }
+
+ public void TestTreeRebuild(ITestAdaptor test)
+ {
+ if (TestRunnerWindow.s_Instance == null)
+ {
+ return;
+ }
+
+ TestRunnerWindow.s_Instance.m_SelectedTestTypes.UpdateTestTree(test);
+ }
+ }
+}
diff --git a/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/WindowResultUpdater.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/WindowResultUpdater.cs.meta
new file mode 100644
index 0000000..5273cf4
--- /dev/null
+++ b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/WindowResultUpdater.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 6d468ee3657be7a43a2ef2178ec14239
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant: