Skip to content

Commit debe5cc

Browse files
authored
Fix issue with centralPackageFloatingVersionsEnabled not being read from the dgspec (#6956)
1 parent 31a1a2d commit debe5cc

2 files changed

Lines changed: 37 additions & 6 deletions

File tree

src/NuGet.Core/NuGet.ProjectModel/JsonPackageSpecReader.Utf8JsonStreamReader.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ public partial class JsonPackageSpecReader
4545
private static readonly byte[] CentralPackageVersionsManagementEnabledPropertyName = Encoding.UTF8.GetBytes("centralPackageVersionsManagementEnabled");
4646
private static readonly byte[] CentralPackageVersionOverrideDisabledPropertyName = Encoding.UTF8.GetBytes("centralPackageVersionOverrideDisabled");
4747
private static readonly byte[] CentralPackageTransitivePinningEnabledPropertyName = Encoding.UTF8.GetBytes("CentralPackageTransitivePinningEnabled");
48+
private static readonly byte[] CentralPackageFloatingVersionsEnabledPropertyName = Encoding.UTF8.GetBytes("centralPackageFloatingVersionsEnabled");
4849
private static readonly byte[] ConfigFilePathsPropertyName = Encoding.UTF8.GetBytes("configFilePaths");
4950
private static readonly byte[] CrossTargetingPropertyName = Encoding.UTF8.GetBytes("crossTargeting");
5051
private static readonly byte[] FallbackFoldersPropertyName = Encoding.UTF8.GetBytes("fallbackFolders");
@@ -748,6 +749,7 @@ private static void ReadMSBuildMetadata(ref Utf8JsonStreamReader jsonReader, Pac
748749
var centralPackageVersionsManagementEnabled = false;
749750
var centralPackageVersionOverrideDisabled = false;
750751
var CentralPackageTransitivePinningEnabled = false;
752+
var centralPackageFloatingVersionsEnabled = false;
751753
List<string> configFilePaths = null;
752754
var crossTargeting = false;
753755
List<string> fallbackFolders = null;
@@ -791,6 +793,10 @@ private static void ReadMSBuildMetadata(ref Utf8JsonStreamReader jsonReader, Pac
791793
{
792794
CentralPackageTransitivePinningEnabled = jsonReader.ReadNextTokenAsBoolOrFalse();
793795
}
796+
else if (jsonReader.ValueTextEquals(CentralPackageFloatingVersionsEnabledPropertyName))
797+
{
798+
centralPackageFloatingVersionsEnabled = jsonReader.ReadNextTokenAsBoolOrFalse();
799+
}
794800
else if (jsonReader.ValueTextEquals(ConfigFilePathsPropertyName))
795801
{
796802
jsonReader.Read();
@@ -1051,6 +1057,7 @@ private static void ReadMSBuildMetadata(ref Utf8JsonStreamReader jsonReader, Pac
10511057
msbuildMetadata.CentralPackageVersionsEnabled = centralPackageVersionsManagementEnabled;
10521058
msbuildMetadata.CentralPackageVersionOverrideDisabled = centralPackageVersionOverrideDisabled;
10531059
msbuildMetadata.CentralPackageTransitivePinningEnabled = CentralPackageTransitivePinningEnabled;
1060+
msbuildMetadata.CentralPackageFloatingVersionsEnabled = centralPackageFloatingVersionsEnabled;
10541061
msbuildMetadata.RestoreAuditProperties = auditProperties;
10551062
msbuildMetadata.SdkAnalysisLevel = sdkAnalysisLevel;
10561063
msbuildMetadata.UsingMicrosoftNETSdk = usingMicrosoftNetSdk;

test/NuGet.Core.Tests/NuGet.ProjectModel.Test/JsonPackageSpecReaderTests.cs

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2110,17 +2110,41 @@ public void GetPackageSpec_WhenSkipContentFileWriteValueIsValid_ReturnsSkipConte
21102110
}
21112111

21122112
[Theory]
2113-
[InlineData(null, false)]
2114-
[InlineData(true, true)]
2115-
[InlineData(false, false)]
2116-
public void GetPackageSpec_WhenCentralPackageVersionsManagementEnabledValueIsValid_ReturnsCentralPackageVersionsManagementEnabled(
2113+
[InlineData("centralPackageVersionsManagementEnabled", null, false)]
2114+
[InlineData("centralPackageVersionsManagementEnabled", true, true)]
2115+
[InlineData("centralPackageVersionsManagementEnabled", false, false)]
2116+
[InlineData("centralPackageVersionOverrideDisabled", null, false)]
2117+
[InlineData("centralPackageVersionOverrideDisabled", true, true)]
2118+
[InlineData("centralPackageVersionOverrideDisabled", false, false)]
2119+
[InlineData("CentralPackageTransitivePinningEnabled", null, false)]
2120+
[InlineData("CentralPackageTransitivePinningEnabled", true, true)]
2121+
[InlineData("CentralPackageTransitivePinningEnabled", false, false)]
2122+
[InlineData("centralPackageFloatingVersionsEnabled", null, false)]
2123+
[InlineData("centralPackageFloatingVersionsEnabled", true, true)]
2124+
[InlineData("centralPackageFloatingVersionsEnabled", false, false)]
2125+
public void GetPackageSpec_WhenCentralPackageManagementPropertyIsSet_ReturnsCorrectValue(
2126+
string propertyName,
21172127
bool? value,
21182128
bool expectedValue)
21192129
{
2120-
var json = $"{{\"restore\":{{\"centralPackageVersionsManagementEnabled\":{(value.HasValue ? value.ToString().ToLowerInvariant() : "null")}}}}}";
2130+
var json = $"{{\"restore\":{{\"{propertyName}\":{(value.HasValue ? value.ToString().ToLowerInvariant() : "null")}}}}}";
21212131
PackageSpec packageSpec = GetPackageSpec(json);
21222132

2123-
Assert.Equal(expectedValue, packageSpec.RestoreMetadata.CentralPackageVersionsEnabled);
2133+
switch (propertyName)
2134+
{
2135+
case "centralPackageVersionsManagementEnabled":
2136+
Assert.Equal(expectedValue, packageSpec.RestoreMetadata.CentralPackageVersionsEnabled);
2137+
break;
2138+
case "centralPackageVersionOverrideDisabled":
2139+
Assert.Equal(expectedValue, packageSpec.RestoreMetadata.CentralPackageVersionOverrideDisabled);
2140+
break;
2141+
case "CentralPackageTransitivePinningEnabled":
2142+
Assert.Equal(expectedValue, packageSpec.RestoreMetadata.CentralPackageTransitivePinningEnabled);
2143+
break;
2144+
case "centralPackageFloatingVersionsEnabled":
2145+
Assert.Equal(expectedValue, packageSpec.RestoreMetadata.CentralPackageFloatingVersionsEnabled);
2146+
break;
2147+
}
21242148
}
21252149

21262150
[Fact]

0 commit comments

Comments
 (0)