AssetPipelineIgnore.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using System;
  2. using NUnit.Framework;
  3. using NUnit.Framework.Interfaces;
  4. using NUnit.Framework.Internal;
  5. namespace UnityEditor.TestTools
  6. {
  7. /// <summary>
  8. /// Ignore attributes dedicated to Asset Import Pipeline backend version handling.
  9. /// </summary>
  10. internal static class AssetPipelineIgnore
  11. {
  12. internal enum AssetPipelineBackend
  13. {
  14. V1,
  15. V2
  16. }
  17. /// <summary>
  18. /// Ignore the test when running with the legacy Asset Import Pipeline V1 backend.
  19. /// </summary>
  20. internal class IgnoreInV1 : AssetPipelineIgnoreAttribute
  21. {
  22. public IgnoreInV1(string ignoreReason) : base(AssetPipelineBackend.V1, ignoreReason) {}
  23. }
  24. /// <summary>
  25. /// Ignore the test when running with the latest Asset Import Pipeline V2 backend.
  26. /// </summary>
  27. internal class IgnoreInV2 : AssetPipelineIgnoreAttribute
  28. {
  29. public IgnoreInV2(string ignoreReason) : base(AssetPipelineBackend.V2, ignoreReason) {}
  30. }
  31. [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method)]
  32. internal class AssetPipelineIgnoreAttribute : NUnitAttribute, IApplyToTest
  33. {
  34. readonly string m_IgnoreReason;
  35. readonly AssetPipelineBackend m_IgnoredBackend;
  36. static readonly AssetPipelineBackend k_ActiveBackend = AssetDatabase.IsV2Enabled()
  37. ? AssetPipelineBackend.V2
  38. : AssetPipelineBackend.V1;
  39. static string ActiveBackendName = Enum.GetName(typeof(AssetPipelineBackend), k_ActiveBackend);
  40. public AssetPipelineIgnoreAttribute(AssetPipelineBackend backend, string ignoreReason)
  41. {
  42. m_IgnoredBackend = backend;
  43. m_IgnoreReason = ignoreReason;
  44. }
  45. public void ApplyToTest(Test test)
  46. {
  47. if (k_ActiveBackend == m_IgnoredBackend)
  48. {
  49. test.RunState = RunState.Ignored;
  50. var skipReason = string.Format("Not supported by asset pipeline {0} backend {1}", ActiveBackendName, m_IgnoreReason);
  51. test.Properties.Add(PropertyNames.SkipReason, skipReason);
  52. }
  53. }
  54. }
  55. }
  56. }