| File: XUnit\SkipOnArchitectureAttribute.cs | Web Access |
| Project: src\winforms\src\Common\tests\TestUtilities\System.Private.Windows.Core.TestUtilities.csproj (System.Private.Windows.Core.TestUtilities) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Runtime.InteropServices; using Microsoft.DotNet.XUnitExtensions; using Xunit.v3; namespace Xunit; /// <summary> /// Apply this attribute to your test method or class to skip it on a certain architecture. /// </summary> /// <remarks> /// <para> /// This attribute isn't able to distinguish Arm64 from x64. To skip tests on Arm64 use /// <see cref="TestArchitectures.X64"/>. See https://github.com/dotnet/winforms/issues/7013. /// </para> /// </remarks> [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, AllowMultiple = true, Inherited = true)] public class SkipOnArchitectureAttribute : Attribute, ITraitAttribute { private readonly TestArchitectures _testArchitectures; public SkipOnArchitectureAttribute(TestArchitectures testArchitectures, string reason) { _testArchitectures = testArchitectures; } public IReadOnlyCollection<KeyValuePair<string, string>> GetTraits() { if ((_testArchitectures.HasFlag(TestArchitectures.X86) && RuntimeInformation.ProcessArchitecture == Architecture.X86) || (_testArchitectures.HasFlag(TestArchitectures.X64) && RuntimeInformation.ProcessArchitecture == Architecture.X64)) { return new[] { new KeyValuePair<string, string>(XunitConstants.Category, XunitConstants.IgnoreForCI) }; } return Array.Empty<KeyValuePair<string, string>>(); } }