From 408dd9503edeb87177bc108c04101e4c05f1a88f Mon Sep 17 00:00:00 2001 From: Joel Verhagen Date: Wed, 4 May 2016 10:53:02 -0700 Subject: [PATCH] Add Xamarin.Mac.NET (xamarinmacnet) TFM --- src/Core/Utility/VersionUtility.cs | 15 +++++--- test/Core.Test/VersionUtilityTest.cs | 51 ++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 4 deletions(-) diff --git a/src/Core/Utility/VersionUtility.cs b/src/Core/Utility/VersionUtility.cs index f14d37a9f..1b18f5e74 100644 --- a/src/Core/Utility/VersionUtility.cs +++ b/src/Core/Utility/VersionUtility.cs @@ -15,6 +15,10 @@ namespace NuGet { public static class VersionUtility { + private const string XamarinMacNetFrameworkShortName = "xamarinmacnet"; + private const string XamarinMacNetFrameworkIdentifier = "Xamarin.Mac.NET"; + private const string XamarinMacFrameworkShortName = "xamarinmac"; + private const string XamarinMacFrameworkIdentifier = "Xamarin.Mac"; private const string NetFrameworkIdentifier = ".NETFramework"; private const string NetCoreAppFrameworkShortName = "netcoreapp"; private const string NetCoreAppFrameworkIdentifier = ".NETCoreApp"; @@ -131,8 +135,10 @@ public static class VersionUtility { "MonoMac", "MonoMac" }, { "Xamarin.iOS", "Xamarin.iOS" }, { "XamariniOS", "Xamarin.iOS" }, - { "Xamarin.Mac", "Xamarin.Mac" }, - { "XamarinMac", "Xamarin.Mac" }, + { XamarinMacFrameworkIdentifier, XamarinMacFrameworkIdentifier }, + { "XamarinMac", XamarinMacFrameworkIdentifier }, + { XamarinMacNetFrameworkIdentifier, XamarinMacNetFrameworkIdentifier }, + { "XamarinMacNET", XamarinMacNetFrameworkIdentifier }, { "Xamarin.PlayStationThree", "Xamarin.PlayStation3" }, { "XamarinPlayStationThree", "Xamarin.PlayStation3" }, { "XamarinPSThree", "Xamarin.PlayStation3" }, @@ -179,7 +185,8 @@ public static class VersionUtility { "WindowsPhone", "wp"}, { "WindowsPhoneApp", "wpa"}, { "Xamarin.iOS", "xamarinios" }, - { "Xamarin.Mac", "xamarinmac" }, + { XamarinMacFrameworkIdentifier, XamarinMacFrameworkShortName }, + { XamarinMacNetFrameworkIdentifier, XamarinMacNetFrameworkShortName }, { "Xamarin.PlayStation3", "xamarinpsthree" }, { "Xamarin.PlayStation4", "xamarinpsfour" }, { "Xamarin.PlayStationVita", "xamarinpsvita" }, @@ -241,7 +248,7 @@ public static class VersionUtility { DnxFrameworkIdentifier, new FrameworkName(AspNetFrameworkIdentifier, MaxVersion) }, // Allow a net package to be installed in an aspnet (or dnx, transitively by above) project - { AspNetFrameworkIdentifier, new FrameworkName(NetFrameworkIdentifier, MaxVersion) }, + { AspNetFrameworkIdentifier, new FrameworkName(NetFrameworkIdentifier, MaxVersion) } }; public static Version DefaultTargetFrameworkVersion diff --git a/test/Core.Test/VersionUtilityTest.cs b/test/Core.Test/VersionUtilityTest.cs index 055ffc9d9..0c9dfb9ee 100644 --- a/test/Core.Test/VersionUtilityTest.cs +++ b/test/Core.Test/VersionUtilityTest.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Globalization; using System.Linq; using System.Runtime.Versioning; using Xunit; @@ -406,6 +407,8 @@ public void ParseFrameworkNameNormalizesSupportedASPNetFrameworkNames(string sho [InlineData(new[] { "Xamarin.iOS", "xamarin.ios", "XAMARIN.IOS " }, "0.0", "Xamarin.iOS")] [InlineData(new[] { "XamarinMac", "xamarinmac", "XAMARINMAC " }, "0.0", "Xamarin.Mac")] [InlineData(new[] { "Xamarin.Mac", "xamarin.mac", "XAMARIN.MAC " }, "0.0", "Xamarin.Mac")] + [InlineData(new[] { "XamarinMacNet", "xamarinmac", "XAMARINMACNET " }, "0.0", "Xamarin.Mac.NET")] + [InlineData(new[] { "Xamarin.Mac.NET", "xamarin.mac.net", "XAMARIN.MAC.NET " }, "0.0", "Xamarin.Mac.NET")] [InlineData(new[] { "XamarinPlayStationThree", "xamarinplaystationthree", "XAMARINPLAYSTATIONthree " }, "0.0","Xamarin.PlayStation3")] [InlineData(new[] { "Xamarin.PlayStationThree", "xamarin.playstationthree", "XAMARIN.PLAYSTATIONTHREE " }, "0.0", "Xamarin.PlayStation3")] [InlineData(new[] { "XamarinPSThree", "xamarinpsthree", "XAMARINPSTHREE " }, "0.0", "Xamarin.PlayStation3")] @@ -1043,6 +1046,47 @@ public void IsCompatibleWindowsPhoneVersions() Assert.False(wpa81CompatibleWithwp81); } + [Theory] + [InlineData("xamarinmacnet45", "xamarinmacnet", true)] + [InlineData("xamarinmacnet45", "xamarinmacnet20", true)] + [InlineData("xamarinmacnet45", "xamarinmac3", false)] + [InlineData("xamarinmacnet45", "net46", false)] + [InlineData("xamarinmacnet45", "net451", false)] + [InlineData("xamarinmacnet45", "netstandard17", false)] + [InlineData("xamarinmacnet45", "dotnet57", false)] + [InlineData("net45", "xamarinmacnet45", false)] + [InlineData("netstandard10", "xamarinmacnet45", false)] + [InlineData("dotnet", "xamarinmacnet45", false)] + [InlineData("xamarinmac2", "xamarinmacnet45", false)] + // These pairs of frameworks SHOULD be compatible to have parity with NuGet 3.X + [InlineData("xamarinmacnet45", "xamarinmac2", false)] + [InlineData("xamarinmacnet45", "xamarinmac", false)] + [InlineData("xamarinmacnet45", "net45", false)] + [InlineData("xamarinmacnet45", "net20", false)] + [InlineData("xamarinmacnet45", "netstandard16", false)] + [InlineData("xamarinmacnet45", "netstandard10", false)] + [InlineData("xamarinmacnet45", "dotnet56", false)] + [InlineData("xamarinmacnet45", "dotnet", false)] + public void IsCompatible_XamarinMacNet(string project, string package, bool isCompatible) + { + // Arrange + var projectFrameworkName = VersionUtility.ParseFrameworkName(project); + var packageFrameworkName = VersionUtility.ParseFrameworkName(package); + + // Act + var actual = VersionUtility.IsCompatible(projectFrameworkName, packageFrameworkName); + + // Assert + Assert.True( + isCompatible == actual, + string.Format( + CultureInfo.InvariantCulture, + "{0} should {1}be compatible with {2}", + project, + isCompatible ? string.Empty : "not ", + package)); + } + [Theory] [InlineData("wp")] [InlineData("wp7")] @@ -1455,6 +1499,9 @@ public void GetShortNameForMangoReturnsWP71() [Theory] [InlineData("Xamarin.Mac, Version=v1.0", "xamarinmac10")] + [InlineData("Xamarin.Mac.NET, Version=v0.0", "xamarinmacnet")] + [InlineData("Xamarin.Mac.NET, Version=v2.0", "xamarinmacnet20")] + [InlineData("Xamarin.Mac.NET, Version=v4.5", "xamarinmacnet45")] [InlineData("Xamarin.iOS, Version=v1.0", "xamarinios10")] [InlineData("Xamarin.PlayStation3, Version=v1.0", "xamarinpsthree10")] [InlineData("Xamarin.PlayStation4, Version=v1.0", "xamarinpsfour10")] @@ -2013,6 +2060,8 @@ private NetPortableProfileCollection BuildProfileCollection() [InlineData("netstandardapp10", ".NETStandardApp", "1.0")] [InlineData("netcoreapp", ".NETCoreApp", "1.0")] [InlineData("netcoreapp10", ".NETCoreApp", "1.0")] + [InlineData("xamarinmacnet", "Xamarin.Mac.NET", "0.0")] + [InlineData("xamarinmacnet45", "Xamarin.Mac.NET", "4.5")] public void CanParseShortFrameworkNames(string shortName, string longName, string version) { var fx = VersionUtility.ParseFrameworkName(shortName); @@ -2028,6 +2077,8 @@ public void CanParseShortFrameworkNames(string shortName, string longName, strin [InlineData(".NETStandardApp", "1.0", "netstandardapp1.0")] [InlineData(".NETCoreApp", "0.0", "netcoreapp")] [InlineData(".NETCoreApp", "1.0", "netcoreapp1.0")] + [InlineData("Xamarin.Mac.NET", "0.0", "xamarinmacnet")] + [InlineData("Xamarin.Mac.NET", "4.5", "xamarinmacnet45")] public void ShortFrameworkNamesAreCorrect(string longName, string version, string shortName) { var fx = new FrameworkName(longName, Version.Parse(version));