diff options
Diffstat (limited to 'Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Messages/RecompileScripts.cs')
| -rw-r--r-- | Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Messages/RecompileScripts.cs | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Messages/RecompileScripts.cs b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Messages/RecompileScripts.cs new file mode 100644 index 0000000..96dc8f3 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/Messages/RecompileScripts.cs @@ -0,0 +1,63 @@ +using System;
+using System.Collections;
+using UnityEditor;
+
+namespace UnityEngine.TestTools
+{
+ public class RecompileScripts : IEditModeTestYieldInstruction
+ {
+ public RecompileScripts() : this(true)
+ {
+ }
+
+ public RecompileScripts(bool expectScriptCompilation) : this(expectScriptCompilation, true)
+ {
+ }
+
+ public RecompileScripts(bool expectScriptCompilation, bool expectScriptCompilationSuccess)
+ {
+ ExpectScriptCompilation = expectScriptCompilation;
+ ExpectScriptCompilationSuccess = expectScriptCompilationSuccess;
+ ExpectDomainReload = true;
+ }
+
+ public bool ExpectDomainReload { get; private set; }
+ public bool ExpectedPlaymodeState { get; }
+ public bool ExpectScriptCompilation { get; private set; }
+ public bool ExpectScriptCompilationSuccess { get; private set; }
+ public static RecompileScripts Current { get; private set; }
+
+ public IEnumerator Perform()
+ {
+ Current = this;
+
+ // We need to yield, to give the test runner a chance to prepare for the domain reload
+ // If the script compilation happens very fast, then EditModeRunner.MoveNextAndUpdateYieldObject will not have a chance to set m_CurrentYieldObject
+ // This really should be fixed in EditModeRunner.MoveNextAndUpdateYieldObject
+ yield return null;
+
+ AssetDatabase.Refresh();
+
+ if (ExpectScriptCompilation && !EditorApplication.isCompiling)
+ {
+ Current = null;
+ throw new Exception("Editor does not need to recompile scripts");
+ }
+
+ EditorApplication.UnlockReloadAssemblies();
+
+ while (EditorApplication.isCompiling)
+ {
+ yield return null;
+ }
+
+ Current = null;
+
+ if (ExpectScriptCompilationSuccess && EditorUtility.scriptCompilationFailed)
+ {
+ EditorApplication.LockReloadAssemblies();
+ throw new Exception("Script compilation failed");
+ }
+ }
+ }
+}
|
