123456789101112131415161718192021222324252627282930313233343536373839 |
- using System;
- using System.Collections;
- using UnityEngine;
- namespace UnityEditor.TestTools.TestRunner.TestRun.Tasks
- {
- internal class PerformUndoTask : TestTaskBase
- {
- private const double warningThreshold = 1000;
-
- internal Action<int> RevertAllDownToGroup = Undo.RevertAllDownToGroup;
- internal Action<string> LogWarning = Debug.LogWarning;
- internal Action<string, string, float> DisplayProgressBar = EditorUtility.DisplayProgressBar;
- internal Action ClearProgressBar = EditorUtility.ClearProgressBar;
- internal Func<DateTime> TimeNow = () => DateTime.Now;
-
- public override IEnumerator Execute(TestJobData testJobData)
- {
- if (testJobData.undoGroup < 0)
- {
- yield break;
- }
- DisplayProgressBar("Undo", "Reverting changes to the scene", 0);
-
- var undoStartTime = TimeNow();
-
- RevertAllDownToGroup(testJobData.undoGroup);
- var timeDelta = TimeNow() - undoStartTime;
- if (timeDelta.TotalMilliseconds >= warningThreshold)
- {
- LogWarning($"Undo after editor test run took {timeDelta.Seconds} second{(timeDelta.Seconds == 1 ? "" : "s")}.");
- }
-
- ClearProgressBar();
- }
- }
- }
|