dotnet-installer/test/Microsoft.DotNet.Tools.Tests.Utilities/PlatformSpecificFact.cs

44 lines
1.4 KiB
C#

// Copyright (c) .NET Foundation and contributors. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using System;
using System.Runtime.InteropServices;
using Xunit;
namespace Microsoft.DotNet.Tools.Test.Utilities
{
public class PlatformSpecificFact : FactAttribute
{
public PlatformSpecificFact(TestPlatforms platforms)
{
if (ShouldSkip(platforms))
{
this.Skip = "This test is not supported on this platform.";
}
}
internal static bool ShouldSkip(TestPlatforms platforms) =>
(RuntimeInformation.IsOSPlatform(OSPlatform.Windows) && !platforms.HasFlag(TestPlatforms.Windows))
|| (RuntimeInformation.IsOSPlatform(OSPlatform.Linux) && !platforms.HasFlag(TestPlatforms.Linux))
|| (RuntimeInformation.IsOSPlatform(OSPlatform.OSX) && !platforms.HasFlag(TestPlatforms.OSX))
|| (RuntimeInformation.IsOSPlatform(OSPlatform.Create("FREEBSD")) && !platforms.HasFlag(TestPlatforms.FreeBSD));
}
[Flags]
public enum TestPlatforms
{
Any = -1,
Windows = 1,
Linux = 2,
OSX = 4,
FreeBSD = 8,
NetBSD = 16,
illumos = 32,
Solaris = 64,
iOS = 128,
tvOS = 256,
Android = 512,
Browser = 1024,
AnyUnix = 2048
}
}