Add CCU test
This commit is contained in:
Родитель
3c1ef4468c
Коммит
0af3a1d8b1
|
@ -0,0 +1,9 @@
|
|||
fileFormatVersion: 2
|
||||
guid: e66b81717fd984a4198e4ef39ecc34f1
|
||||
folderAsset: yes
|
||||
timeCreated: 1483990449
|
||||
licenseType: Pro
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,9 @@
|
|||
fileFormatVersion: 2
|
||||
guid: bad2284f6d38fab4ca76252a966fa0c3
|
||||
folderAsset: yes
|
||||
timeCreated: 1483990458
|
||||
licenseType: Pro
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,101 @@
|
|||
using System;
|
||||
using System.Reflection;
|
||||
using NUnit.Framework;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
[InitializeOnLoad]
|
||||
public class CCUTest
|
||||
{
|
||||
const string kEditorPrefsKey = "EVR_TEST_CCU";
|
||||
const string kOldDefinesKey = "EVR_TEST_CCU_OLD_DEFINES";
|
||||
static bool compiled;
|
||||
static FieldInfo s_RunnerWindowInstanceField;
|
||||
static Type s_RunnerWindowType;
|
||||
|
||||
static string s_ErrorLog;
|
||||
|
||||
[Test]
|
||||
public void TestCCU()
|
||||
{
|
||||
if (compiled)
|
||||
{
|
||||
Assert.IsFalse(CheckErrors(), s_ErrorLog);
|
||||
if (EditorPrefs.HasKey(kOldDefinesKey))
|
||||
{
|
||||
PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Standalone, EditorPrefs.GetString(kOldDefinesKey));
|
||||
EditorPrefs.DeleteKey(kOldDefinesKey);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.ClearDeveloperConsole();
|
||||
Application.logMessageReceived += Log;
|
||||
EditorPrefs.SetString(kOldDefinesKey, PlayerSettings.GetScriptingDefineSymbolsForGroup(BuildTargetGroup.Standalone));
|
||||
|
||||
PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Standalone, "");
|
||||
|
||||
EditorPrefs.SetBool(kEditorPrefsKey, true);
|
||||
|
||||
Assert.Inconclusive("Waiting for compile");
|
||||
}
|
||||
}
|
||||
|
||||
static CCUTest()
|
||||
{
|
||||
foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
|
||||
{
|
||||
s_RunnerWindowType = assembly.GetType("UnityEditor.EditorTestsRunner.EditorTestsRunnerWindow", false, true);
|
||||
if (s_RunnerWindowType != null)
|
||||
break;
|
||||
}
|
||||
|
||||
s_RunnerWindowInstanceField = s_RunnerWindowType.GetField("s_Instance", BindingFlags.Static | BindingFlags.NonPublic);
|
||||
|
||||
EditorApplication.update -= Update;
|
||||
EditorApplication.update += Update;
|
||||
}
|
||||
|
||||
static void Update()
|
||||
{
|
||||
if (!EditorApplication.isCompiling)
|
||||
{
|
||||
var runnerWindowInstance = s_RunnerWindowInstanceField.GetValue(null);
|
||||
|
||||
if (runnerWindowInstance != null)
|
||||
{
|
||||
var test = EditorPrefs.GetBool(kEditorPrefsKey);
|
||||
if (test)
|
||||
{
|
||||
compiled = true;
|
||||
EditorPrefs.DeleteKey(kEditorPrefsKey);
|
||||
Application.logMessageReceived -= Log;
|
||||
s_RunnerWindowType.InvokeMember("RunTests", BindingFlags.InvokeMethod | BindingFlags.NonPublic, null, runnerWindowInstance, null);
|
||||
}
|
||||
}
|
||||
|
||||
if (CheckErrors() && EditorPrefs.HasKey(kOldDefinesKey))
|
||||
{
|
||||
Application.logMessageReceived -= Log;
|
||||
PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Standalone, EditorPrefs.GetString(kOldDefinesKey));
|
||||
EditorPrefs.DeleteKey(kOldDefinesKey);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void Log(string logString, string stackTrace, LogType type)
|
||||
{
|
||||
s_ErrorLog += logString + '\n' + stackTrace + '\n';
|
||||
}
|
||||
|
||||
static bool CheckErrors()
|
||||
{
|
||||
var assembly = Assembly.GetAssembly(typeof(SceneView));
|
||||
var logEntries = assembly.GetType("UnityEditorInternal.LogEntries");
|
||||
logEntries.GetMethod("Clear").Invoke (new object (), null);
|
||||
|
||||
var count = (int)logEntries.GetMethod("GetCount").Invoke(new object(), null);
|
||||
|
||||
return count > 0;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
fileFormatVersion: 2
|
||||
guid: a453af7b8c5c6d849be47cc2da16236e
|
||||
timeCreated: 1483990479
|
||||
licenseType: Pro
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Загрузка…
Ссылка в новой задаче