diff --git a/src/TestFramework/TestFramework/Attributes/TestMethod/OSConditionAttribute.cs b/src/TestFramework/TestFramework/Attributes/TestMethod/OSConditionAttribute.cs index cbb7c5dff8..9827332549 100644 --- a/src/TestFramework/TestFramework/Attributes/TestMethod/OSConditionAttribute.cs +++ b/src/TestFramework/TestFramework/Attributes/TestMethod/OSConditionAttribute.cs @@ -12,6 +12,15 @@ namespace Microsoft.VisualStudio.TestTools.UnitTesting; [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = false, AllowMultiple = false)] public sealed class OSConditionAttribute : ConditionBaseAttribute { +#if !NETFRAMEWORK + private static readonly OSPlatform FreeBSD = +#if NETSTANDARD + OSPlatform.Create("FreeBSD"); +#else + OSPlatform.FreeBSD; +#endif +#endif + private readonly OperatingSystems _operatingSystems; /// @@ -48,7 +57,11 @@ public override bool ShouldRun } else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) { - return (_operatingSystems & OperatingSystems.MacOSX) != 0; + return (_operatingSystems & OperatingSystems.OSX) != 0; + } + else if (RuntimeInformation.IsOSPlatform(FreeBSD)) + { + return (_operatingSystems & OperatingSystems.FreeBSD) != 0; } return false; diff --git a/src/TestFramework/TestFramework/Attributes/TestMethod/OperatingSystems.cs b/src/TestFramework/TestFramework/Attributes/TestMethod/OperatingSystems.cs index bc2c29e1d3..3ab8b6ca25 100644 --- a/src/TestFramework/TestFramework/Attributes/TestMethod/OperatingSystems.cs +++ b/src/TestFramework/TestFramework/Attributes/TestMethod/OperatingSystems.cs @@ -12,17 +12,20 @@ public enum OperatingSystems /// /// Represents the Linux operating system. /// - Linux = 1, - - // TODO: This is copied from aspnetcore repo. Should we name it MacOS instead? Or OSX? + Linux = 1 << 0, /// /// Representing the MacOS operating system. /// - MacOSX = 2, + OSX = 1 << 1, /// /// Represents the Windows operating system. /// - Windows = 4, + Windows = 1 << 2, + + /// + /// Represents the FreeBSD operating system. + /// + FreeBSD = 1 << 3, } diff --git a/src/TestFramework/TestFramework/PublicAPI/PublicAPI.Unshipped.txt b/src/TestFramework/TestFramework/PublicAPI/PublicAPI.Unshipped.txt index 5c88f25607..c38bca695f 100644 --- a/src/TestFramework/TestFramework/PublicAPI/PublicAPI.Unshipped.txt +++ b/src/TestFramework/TestFramework/PublicAPI/PublicAPI.Unshipped.txt @@ -249,8 +249,9 @@ Microsoft.VisualStudio.TestTools.UnitTesting.ITestDataSourceIgnoreCapability Microsoft.VisualStudio.TestTools.UnitTesting.ITestDataSourceIgnoreCapability.IgnoreMessage.get -> string? Microsoft.VisualStudio.TestTools.UnitTesting.ITestDataSourceIgnoreCapability.IgnoreMessage.set -> void Microsoft.VisualStudio.TestTools.UnitTesting.OperatingSystems +Microsoft.VisualStudio.TestTools.UnitTesting.OperatingSystems.FreeBSD = 8 -> Microsoft.VisualStudio.TestTools.UnitTesting.OperatingSystems Microsoft.VisualStudio.TestTools.UnitTesting.OperatingSystems.Linux = 1 -> Microsoft.VisualStudio.TestTools.UnitTesting.OperatingSystems -Microsoft.VisualStudio.TestTools.UnitTesting.OperatingSystems.MacOSX = 2 -> Microsoft.VisualStudio.TestTools.UnitTesting.OperatingSystems +Microsoft.VisualStudio.TestTools.UnitTesting.OperatingSystems.OSX = 2 -> Microsoft.VisualStudio.TestTools.UnitTesting.OperatingSystems Microsoft.VisualStudio.TestTools.UnitTesting.OperatingSystems.Windows = 4 -> Microsoft.VisualStudio.TestTools.UnitTesting.OperatingSystems Microsoft.VisualStudio.TestTools.UnitTesting.OSConditionAttribute Microsoft.VisualStudio.TestTools.UnitTesting.OSConditionAttribute.OSConditionAttribute(Microsoft.VisualStudio.TestTools.UnitTesting.ConditionMode mode, Microsoft.VisualStudio.TestTools.UnitTesting.OperatingSystems operatingSystems) -> void