summaryrefslogtreecommitdiff
path: root/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallback.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/TestRunner/Callbacks/RerunCallback.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/TestRunner/Callbacks/RerunCallback.cs')
-rw-r--r--Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallback.cs86
1 files changed, 86 insertions, 0 deletions
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)
+ {
+ }
+ }
+}