File: Attributes\NativeDependencyTheoryAttribute.cs
Web Access
Project: src\test\Microsoft.ML.TestFrameworkCommon\Microsoft.ML.TestFrameworkCommon.csproj (Microsoft.ML.TestFrameworkCommon)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
 
using Microsoft.ML.TestFrameworkCommon.Attributes;
using Microsoft.ML.TestFrameworkCommon.Utility;
 
namespace Microsoft.ML.TestFramework.Attributes
{
    public sealed class NativeDependencyTheoryAttribute : EnvironmentSpecificTheoryAttribute
    {
        private readonly string _library;
 
        public NativeDependencyTheoryAttribute(string library) : base($"This test requires a native library {library} that wasn't found.")
        {
            _library = library;
        }
 
        /// <inheritdoc />
        protected override bool IsEnvironmentSupported()
        {
            // Starting to drop native support for X64 OSX since intel no longer makes them.
            if (System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(System.Runtime.InteropServices.OSPlatform.OSX) && System.Runtime.InteropServices.RuntimeInformation.ProcessArchitecture == System.Runtime.InteropServices.Architecture.X64)
                return false;
            return NativeLibrary.NativeLibraryExists(_library);
        }
    }
}