Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 11 additions & 4 deletions src/Core/Utility/VersionUtility.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand Down Expand Up @@ -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" },
Expand Down Expand Up @@ -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" },
Expand Down Expand Up @@ -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
Expand Down
51 changes: 51 additions & 0 deletions test/Core.Test/VersionUtilityTest.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Runtime.Versioning;
using Xunit;
Expand Down Expand Up @@ -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")]
Expand Down Expand Up @@ -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")]
Expand Down Expand Up @@ -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")]
Expand Down Expand Up @@ -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);
Expand All @@ -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));
Expand Down