Skip to content

Commit cbc6b44

Browse files
authored
Add SemVer2.0 Support (#16)
* update NuGet.Core reference to 2.14 for server. Expand semver tests to include semver 2.0 type versions.
1 parent 9d18a01 commit cbc6b44

12 files changed

Lines changed: 135 additions & 48 deletions

NuGet.config

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<?xml version="1.0" encoding="utf-8"?>
1+
<?xml version="1.0" encoding="utf-8"?>
22
<configuration>
33
<config>
44
<add key="repositorypath" value=".\packages" />
@@ -10,8 +10,11 @@
1010
<packageSources>
1111
<clear />
1212
<add key="nuget.org" value="https://www.nuget.org/api/v2/" />
13+
<add key="NuGet-Volatile" value="https://dotnet.myget.org/F/nuget-volatile" />
1314
</packageSources>
14-
<disabledPackageSources />
15+
<disabledPackageSources>
16+
<add key="Microsoft and .NET" value="true" />
17+
</disabledPackageSources>
1518
<activePackageSource>
1619
<add key="All" value="(Aggregate source)" />
1720
</activePackageSource>

src/NuGet.Server.Core/NuGet.Server.Core.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@
4040
<HintPath>..\..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
4141
<Private>True</Private>
4242
</Reference>
43-
<Reference Include="NuGet.Core">
44-
<HintPath>..\..\packages\NuGet.Core.2.11.1\lib\net40-Client\NuGet.Core.dll</HintPath>
43+
<Reference Include="NuGet.Core, Version=2.14.0.830, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
44+
<HintPath>..\..\packages\NuGet.Core.2.14.0-rtm-830\lib\net40-Client\NuGet.Core.dll</HintPath>
4545
<Private>True</Private>
4646
</Reference>
4747
<Reference Include="System" />

src/NuGet.Server.Core/packages.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
<packages>
33
<package id="Microsoft.Web.Xdt" version="2.1.1" targetFramework="net46" />
44
<package id="Newtonsoft.Json" version="8.0.3" targetFramework="net46" />
5-
<package id="NuGet.Core" version="2.11.1" targetFramework="net46" />
5+
<package id="NuGet.Core" version="2.14.0-rtm-830" targetFramework="net46" />
66
</packages>

src/NuGet.Server/NuGet.Server.csproj

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,8 @@
4545
<HintPath>..\..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
4646
<Private>True</Private>
4747
</Reference>
48-
<Reference Include="NuGet.Core, Version=2.11.1.812, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
49-
<SpecificVersion>False</SpecificVersion>
50-
<HintPath>..\..\packages\NuGet.Core.2.11.1\lib\net40-Client\NuGet.Core.dll</HintPath>
48+
<Reference Include="NuGet.Core, Version=2.14.0.830, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
49+
<HintPath>..\..\packages\NuGet.Core.2.14.0-rtm-830\lib\net40-Client\NuGet.Core.dll</HintPath>
5150
<Private>True</Private>
5251
</Reference>
5352
<Reference Include="RouteMagic, Version=1.3.0.0, Culture=neutral, PublicKeyToken=84b59be021aa4cee, processorArchitecture=MSIL">

src/NuGet.Server/packages.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net46" />
44
<package id="Microsoft.Web.Xdt" version="2.1.1" targetFramework="net46" />
55
<package id="Newtonsoft.Json" version="8.0.3" targetFramework="net46" />
6-
<package id="NuGet.Core" version="2.11.1" targetFramework="net46" />
6+
<package id="NuGet.Core" version="2.14.0-rtm-830" targetFramework="net46" />
77
<package id="RouteMagic" version="1.3" targetFramework="net46" />
88
<package id="WebActivatorEx" version="2.1.0" targetFramework="net46" />
99
</packages>

test/NuGet.Server.Core.Tests/NormalizeVersionInterceptorTest.cs

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,46 @@ public static IEnumerable<object[]> TheoryData
4545
ExpressionType.Equal,
4646
Expression.Constant("1.0.0"),
4747
Expression.MakeMemberAccess(Expression.Parameter(typeof(ODataPackage)), _normalizedVersionMember))
48-
}
48+
},
49+
50+
new object[]
51+
{
52+
Expression.MakeBinary(
53+
ExpressionType.Equal,
54+
Expression.MakeMemberAccess(Expression.Parameter(typeof(ODataPackage)), _versionMember),
55+
Expression.Constant("1.0.0-00test")),
56+
57+
Expression.MakeBinary(
58+
ExpressionType.Equal,
59+
Expression.Constant("1.0.0-00test"),
60+
Expression.MakeMemberAccess(Expression.Parameter(typeof(ODataPackage)), _normalizedVersionMember))
61+
},
62+
63+
new object[]
64+
{
65+
Expression.MakeBinary(
66+
ExpressionType.Equal,
67+
Expression.MakeMemberAccess(Expression.Parameter(typeof(ODataPackage)), _versionMember),
68+
Expression.Constant("1.0.0-00test+tagged")),
69+
70+
Expression.MakeBinary(
71+
ExpressionType.Equal,
72+
Expression.Constant("1.0.0-00test"),
73+
Expression.MakeMemberAccess(Expression.Parameter(typeof(ODataPackage)), _normalizedVersionMember))
74+
},
75+
76+
new object[]
77+
{
78+
Expression.MakeBinary(
79+
ExpressionType.Equal,
80+
Expression.MakeMemberAccess(Expression.Parameter(typeof(ODataPackage)), _versionMember),
81+
Expression.Constant("1.0.0+taggedOnly")),
82+
83+
Expression.MakeBinary(
84+
ExpressionType.Equal,
85+
Expression.Constant("1.0.0"),
86+
Expression.MakeMemberAccess(Expression.Parameter(typeof(ODataPackage)), _normalizedVersionMember))
87+
},
4988
};
5089
}
5190
}
@@ -70,18 +109,25 @@ public void FindsPackagesUsingNormalizedVersion()
70109
// Arrange
71110
var data = new List<ODataPackage>();
72111
data.Add(new ODataPackage { Id = "foo", Version = "1.0.0.0.0.0", NormalizedVersion = "1.0.0"});
112+
data.Add(new ODataPackage { Id = "foo1", Version = "2.0.0+tagged", NormalizedVersion = "2.0.0" });
73113

74114
var queryable = data.AsQueryable().InterceptWith(new NormalizeVersionInterceptor());
75115

76116
// Act
77117
var result1 = queryable.FirstOrDefault(p => p.Version == "1.0");
78118
var result2 = queryable.FirstOrDefault(p => p.Version == "1.0.0");
79119
var result3 = queryable.FirstOrDefault(p => p.Version == "1.0.0.0");
120+
var result4 = queryable.FirstOrDefault(p => p.Version == "2.0");
121+
var result5 = queryable.FirstOrDefault(p => p.Version == "2.0.0");
122+
var result6 = queryable.FirstOrDefault(p => p.Version == "2.0.0+someOtherTag");
80123

81124
// Assert
82125
Assert.Equal(result1, data[0]);
83126
Assert.Equal(result2, data[0]);
84127
Assert.Equal(result3, data[0]);
128+
Assert.Equal(result4, data[1]);
129+
Assert.Equal(result5, data[1]);
130+
Assert.Equal(result6, data[1]);
85131
}
86132
}
87133
}

test/NuGet.Server.Core.Tests/NuGet.Server.Core.Tests.csproj

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,8 @@
4141
<HintPath>..\..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
4242
<Private>True</Private>
4343
</Reference>
44-
<Reference Include="NuGet.Core, Version=2.11.1.812, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
45-
<SpecificVersion>False</SpecificVersion>
46-
<HintPath>..\..\packages\NuGet.Core.2.11.1\lib\net40-Client\NuGet.Core.dll</HintPath>
44+
<Reference Include="NuGet.Core, Version=2.14.0.830, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
45+
<HintPath>..\..\packages\NuGet.Core.2.14.0-rtm-830\lib\net40-Client\NuGet.Core.dll</HintPath>
4746
<Private>True</Private>
4847
</Reference>
4948
<Reference Include="System" />

test/NuGet.Server.Core.Tests/SemanticVersionJsonConverterTests.cs

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,13 @@ public void CanConvertVersion()
3333
}
3434

3535
[Theory]
36-
[InlineData("1.0.0")]
37-
[InlineData("2.0.0.0")]
38-
[InlineData("3.0.0-alpha1")]
39-
public void SerializesSemanticVersionAsString(string version)
36+
[InlineData("1.0.0", "1.0.0")]
37+
[InlineData("2.0.0.0", "2.0.0.0")]
38+
[InlineData("3.0.0-alpha1", "3.0.0-alpha1")]
39+
[InlineData("4.0.0-0test.zero", "4.0.0-0test.zero")]
40+
[InlineData("4.0.0-0test.zero+tagParses", "4.0.0-0test.zero")]
41+
[InlineData("4.0.0-test.more.parts+tagsHash", "4.0.0-test.more.parts")]
42+
public void SerializesSemanticVersionAsString(string version, string expected)
4043
{
4144
// Arrange
4245
var json = new StringBuilder();
@@ -48,7 +51,7 @@ public void SerializesSemanticVersionAsString(string version)
4851
converter.WriteJson(writer, SemanticVersion.Parse(version), new JsonSerializer());
4952

5053
// Assert
51-
Assert.Equal("\"" + version + "\"", json.ToString());
54+
Assert.Equal("\"" + expected + "\"", json.ToString());
5255
}
5356
}
5457

@@ -72,12 +75,16 @@ public void SerializesVersionAsString(string version)
7275
}
7376

7477
[Theory]
75-
[InlineData("1.0.0", typeof(SemanticVersion))]
76-
[InlineData("2.0.0.0", typeof(SemanticVersion))]
77-
[InlineData("3.0.0-alpha", typeof(SemanticVersion))]
78-
[InlineData("1.0.0", typeof(Version))]
79-
[InlineData("2.0.0.0", typeof(Version))]
80-
public void Deserializes(string version, Type type)
78+
[InlineData("1.0.0", typeof(SemanticVersion), "1.0.0")]
79+
[InlineData("2.0.0.0", typeof(SemanticVersion), "2.0.0.0")]
80+
[InlineData("3.0.0-alpha", typeof(SemanticVersion), "3.0.0-alpha")]
81+
[InlineData("4.0.0-0test.zero", typeof(SemanticVersion), "4.0.0-0test.zero")]
82+
[InlineData("4.0.0-0test.zero+tagParses", typeof(SemanticVersion), "4.0.0-0test.zero")]
83+
[InlineData("4.0.0-test.more.parts+tagsHash", typeof(SemanticVersion), "4.0.0-test.more.parts")]
84+
[InlineData("4.0.0+tagsOnly", typeof(SemanticVersion), "4.0.0")]
85+
[InlineData("1.0.0", typeof(Version), "1.0.0")]
86+
[InlineData("2.0.0.0", typeof(Version), "2.0.0.0")]
87+
public void Deserializes(string version, Type type, string expected=null)
8188
{
8289
// Arrange
8390
using (var reader = new JsonTextReader(new StringReader("\"" + version + "\"")))
@@ -88,7 +95,7 @@ public void Deserializes(string version, Type type)
8895
var result = converter.ReadJson(reader, type, null, new JsonSerializer());
8996

9097
// Assert
91-
Assert.Equal(version, result.ToString());
98+
Assert.Equal(expected, result.ToString());
9299
}
93100
}
94101
}

0 commit comments

Comments
 (0)