using System; using NUnit.Framework; using NUnit.Framework.Interfaces; using NUnit.Framework.Internal; namespace UnityEditor.TestTools { /// /// Ignore attributes dedicated to Asset Import Pipeline backend version handling. /// internal static class AssetPipelineIgnore { internal enum AssetPipelineBackend { V1, V2 } /// /// Ignore the test when running with the legacy Asset Import Pipeline V1 backend. /// internal class IgnoreInV1 : AssetPipelineIgnoreAttribute { public IgnoreInV1(string ignoreReason) : base(AssetPipelineBackend.V1, ignoreReason) {} } /// /// Ignore the test when running with the latest Asset Import Pipeline V2 backend. /// 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); } } } } }