summaryrefslogtreecommitdiff
path: root/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension
diff options
context:
space:
mode:
Diffstat (limited to 'Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension')
-rw-r--r--Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension/Attributes.meta8
-rw-r--r--Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension/Attributes/AssetPipelineIgnore.cs63
-rw-r--r--Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension/Attributes/AssetPipelineIgnore.cs.meta11
-rw-r--r--Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension/Attributes/ITestPlayerBuildModifier.cs7
-rw-r--r--Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension/Attributes/ITestPlayerBuildModifier.cs.meta11
-rw-r--r--Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension/Attributes/TestPlayerBuildModifierAttribute.cs25
-rw-r--r--Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension/Attributes/TestPlayerBuildModifierAttribute.cs.meta11
-rw-r--r--Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension/TestRunnerStateSerializer.cs162
-rw-r--r--Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension/TestRunnerStateSerializer.cs.meta11
9 files changed, 309 insertions, 0 deletions
diff --git a/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension/Attributes.meta b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension/Attributes.meta
new file mode 100644
index 0000000..585e7ee
--- /dev/null
+++ b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension/Attributes.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 96c503bf059df984c86eecf572370347
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension/Attributes/AssetPipelineIgnore.cs b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension/Attributes/AssetPipelineIgnore.cs
new file mode 100644
index 0000000..d1d579f
--- /dev/null
+++ b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension/Attributes/AssetPipelineIgnore.cs
@@ -0,0 +1,63 @@
+using System;
+using NUnit.Framework;
+using NUnit.Framework.Interfaces;
+using NUnit.Framework.Internal;
+
+namespace UnityEditor.TestTools
+{
+ /// <summary>
+ /// Ignore attributes dedicated to Asset Import Pipeline backend version handling.
+ /// </summary>
+ internal static class AssetPipelineIgnore
+ {
+ internal enum AssetPipelineBackend
+ {
+ V1,
+ V2
+ }
+
+ /// <summary>
+ /// Ignore the test when running with the legacy Asset Import Pipeline V1 backend.
+ /// </summary>
+ internal class IgnoreInV1 : AssetPipelineIgnoreAttribute
+ {
+ public IgnoreInV1(string ignoreReason) : base(AssetPipelineBackend.V1, ignoreReason) {}
+ }
+
+ /// <summary>
+ /// Ignore the test when running with the latest Asset Import Pipeline V2 backend.
+ /// </summary>
+ internal class IgnoreInV2 : AssetPipelineIgnoreAttribute
+ {
+ public IgnoreInV2(string ignoreReason) : base(AssetPipelineBackend.V2, ignoreReason) {}
+ }
+
+ [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method)]
+ internal class AssetPipelineIgnoreAttribute : NUnitAttribute, IApplyToTest
+ {
+ readonly string m_IgnoreReason;
+ readonly AssetPipelineBackend m_IgnoredBackend;
+ static readonly AssetPipelineBackend k_ActiveBackend = AssetDatabase.IsV2Enabled()
+ ? AssetPipelineBackend.V2
+ : AssetPipelineBackend.V1;
+
+ static string ActiveBackendName = Enum.GetName(typeof(AssetPipelineBackend), k_ActiveBackend);
+
+ public AssetPipelineIgnoreAttribute(AssetPipelineBackend backend, string ignoreReason)
+ {
+ m_IgnoredBackend = backend;
+ m_IgnoreReason = ignoreReason;
+ }
+
+ public void ApplyToTest(Test test)
+ {
+ if (k_ActiveBackend == m_IgnoredBackend)
+ {
+ test.RunState = RunState.Ignored;
+ var skipReason = string.Format("Not supported by asset pipeline {0} backend {1}", ActiveBackendName, m_IgnoreReason);
+ test.Properties.Add(PropertyNames.SkipReason, skipReason);
+ }
+ }
+ }
+ }
+}
diff --git a/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension/Attributes/AssetPipelineIgnore.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension/Attributes/AssetPipelineIgnore.cs.meta
new file mode 100644
index 0000000..3d9d352
--- /dev/null
+++ b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension/Attributes/AssetPipelineIgnore.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b88caca58e05ee74486d86fb404c48e2
+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/NUnitExtension/Attributes/ITestPlayerBuildModifier.cs b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension/Attributes/ITestPlayerBuildModifier.cs
new file mode 100644
index 0000000..99d7515
--- /dev/null
+++ b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension/Attributes/ITestPlayerBuildModifier.cs
@@ -0,0 +1,7 @@
+namespace UnityEditor.TestTools
+{
+ public interface ITestPlayerBuildModifier
+ {
+ BuildPlayerOptions ModifyOptions(BuildPlayerOptions playerOptions);
+ }
+} \ No newline at end of file
diff --git a/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension/Attributes/ITestPlayerBuildModifier.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension/Attributes/ITestPlayerBuildModifier.cs.meta
new file mode 100644
index 0000000..b491f6b
--- /dev/null
+++ b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension/Attributes/ITestPlayerBuildModifier.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 6d2f47eae5f447748892c46848956d5f
+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/NUnitExtension/Attributes/TestPlayerBuildModifierAttribute.cs b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension/Attributes/TestPlayerBuildModifierAttribute.cs
new file mode 100644
index 0000000..bcf7c24
--- /dev/null
+++ b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension/Attributes/TestPlayerBuildModifierAttribute.cs
@@ -0,0 +1,25 @@
+using System;
+
+namespace UnityEditor.TestTools
+{
+ [AttributeUsage(AttributeTargets.Assembly)]
+ public class TestPlayerBuildModifierAttribute : Attribute
+ {
+ private Type m_Type;
+ public TestPlayerBuildModifierAttribute(Type type)
+ {
+ var interfaceType = typeof(ITestPlayerBuildModifier);
+ if (!interfaceType.IsAssignableFrom(type))
+ {
+ throw new ArgumentException(string.Format("Type provided to {0} does not implement {1}", this.GetType().Name, interfaceType.Name));
+ }
+ m_Type = type;
+ }
+
+ internal ITestPlayerBuildModifier ConstructModifier()
+ {
+ return Activator.CreateInstance(m_Type) as ITestPlayerBuildModifier;
+ }
+ }
+}
+
diff --git a/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension/Attributes/TestPlayerBuildModifierAttribute.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension/Attributes/TestPlayerBuildModifierAttribute.cs.meta
new file mode 100644
index 0000000..6020add
--- /dev/null
+++ b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension/Attributes/TestPlayerBuildModifierAttribute.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: dd57b1176859fc84e93586103d3b5f73
+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/NUnitExtension/TestRunnerStateSerializer.cs b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension/TestRunnerStateSerializer.cs
new file mode 100644
index 0000000..351e622
--- /dev/null
+++ b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension/TestRunnerStateSerializer.cs
@@ -0,0 +1,162 @@
+using System;
+using System.Reflection;
+using System.Text;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.TestRunner.NUnitExtensions.Runner;
+using UnityEngine.TestTools.NUnitExtensions;
+using UnityEngine.TestTools.Logging;
+
+namespace UnityEditor.TestTools.TestRunner
+{
+ [Serializable]
+ internal class TestRunnerStateSerializer : IStateSerializer
+ {
+ private const BindingFlags Flags = BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.FlattenHierarchy;
+
+ [SerializeField]
+ private HideFlags m_OriginalHideFlags;
+
+ [SerializeField]
+ private bool m_ShouldRestore;
+
+ [SerializeField]
+ private string m_TestObjectTypeName;
+
+ [SerializeField]
+ private ScriptableObject m_TestObject;
+
+ [SerializeField]
+ private string m_TestObjectTxt;
+
+ [SerializeField]
+ private long StartTicks;
+
+ [SerializeField]
+ private double StartTimeOA;
+
+ [SerializeField]
+ private string output;
+
+ [SerializeField]
+ private LogMatch[] m_ExpectedLogs;
+
+ public bool ShouldRestore()
+ {
+ return m_ShouldRestore;
+ }
+
+ public void SaveContext()
+ {
+ var currentContext = UnityTestExecutionContext.CurrentContext;
+
+ if (currentContext.TestObject != null)
+ {
+ m_TestObjectTypeName = currentContext.TestObject.GetType().AssemblyQualifiedName;
+ m_TestObject = null;
+ m_TestObjectTxt = null;
+ if (currentContext.TestObject is ScriptableObject)
+ {
+ m_TestObject = currentContext.TestObject as ScriptableObject;
+ m_OriginalHideFlags = m_TestObject.hideFlags;
+ m_TestObject.hideFlags |= HideFlags.DontSave;
+ }
+ else
+ {
+ m_TestObjectTxt = JsonUtility.ToJson(currentContext.TestObject);
+ }
+ }
+
+ output = currentContext.CurrentResult.Output;
+ StartTicks = currentContext.StartTicks;
+ StartTimeOA = currentContext.StartTime.ToOADate();
+ if (LogScope.HasCurrentLogScope())
+ {
+ m_ExpectedLogs = LogScope.Current.ExpectedLogs.ToArray();
+ }
+
+ m_ShouldRestore = true;
+ }
+
+ public void RestoreContext()
+ {
+ var currentContext = UnityTestExecutionContext.CurrentContext;
+
+ var outputProp = currentContext.CurrentResult.GetType().BaseType.GetField("_output", Flags);
+ (outputProp.GetValue(currentContext.CurrentResult) as StringBuilder).Append(output);
+
+ currentContext.StartTicks = StartTicks;
+ currentContext.StartTime = DateTime.FromOADate(StartTimeOA);
+ if (LogScope.HasCurrentLogScope())
+ {
+ LogScope.Current.ExpectedLogs = new Queue<LogMatch>(m_ExpectedLogs);
+ }
+
+ m_ShouldRestore = false;
+ }
+
+ public bool CanRestoreFromScriptableObject(Type requestedType)
+ {
+ if (m_TestObject == null)
+ {
+ return false;
+ }
+ return m_TestObjectTypeName == requestedType.AssemblyQualifiedName;
+ }
+
+ public ScriptableObject RestoreScriptableObjectInstance()
+ {
+ if (m_TestObject == null)
+ {
+ Debug.LogError("No object to restore");
+ return null;
+ }
+ EditorApplication.playModeStateChanged += OnPlayModeStateChanged;
+ var temp = m_TestObject;
+ m_TestObject = null;
+ m_TestObjectTypeName = null;
+ return temp;
+ }
+
+ public bool CanRestoreFromJson(Type requestedType)
+ {
+ if (string.IsNullOrEmpty(m_TestObjectTxt))
+ {
+ return false;
+ }
+ return m_TestObjectTypeName == requestedType.AssemblyQualifiedName;
+ }
+
+ public void RestoreClassFromJson(ref object instance)
+ {
+ if (string.IsNullOrEmpty(m_TestObjectTxt))
+ {
+ Debug.LogWarning("No JSON representation to restore");
+ return;
+ }
+ JsonUtility.FromJsonOverwrite(m_TestObjectTxt, instance);
+ m_TestObjectTxt = null;
+ m_TestObjectTypeName = null;
+ }
+
+ private void OnPlayModeStateChanged(PlayModeStateChange state)
+ {
+ if (m_TestObject == null)
+ {
+ EditorApplication.playModeStateChanged -= OnPlayModeStateChanged;
+ return;
+ }
+
+ //We set the DontSave flag here because the ScriptableObject would be nulled right before entering EditMode
+ if (state == PlayModeStateChange.ExitingPlayMode)
+ {
+ m_TestObject.hideFlags |= HideFlags.DontSave;
+ }
+ else if (state == PlayModeStateChange.EnteredEditMode)
+ {
+ m_TestObject.hideFlags = m_OriginalHideFlags;
+ EditorApplication.playModeStateChanged -= OnPlayModeStateChanged;
+ }
+ }
+ }
+}
diff --git a/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension/TestRunnerStateSerializer.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension/TestRunnerStateSerializer.cs.meta
new file mode 100644
index 0000000..94495c1
--- /dev/null
+++ b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/NUnitExtension/TestRunnerStateSerializer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 124533853216377448d786fd7c725701
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant: