Skip to content

Commit

Permalink
Merge pull request #9689 from dependabot/dev/brettfo/nuget-4-part-ver…
Browse files Browse the repository at this point in the history
…sion

allow 4 part version numbers for transitive dependencies
  • Loading branch information
raj-meka committed May 10, 2024
2 parents e5ec7e9 + 2c76626 commit ac4d094
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 1 deletion.
Expand Up @@ -401,5 +401,50 @@ public async Task NoDependenciesReturnedIfNoTargetFrameworkCanBeResolved()
Projects = []
});
}

[Fact]
public async Task DiscoverReportsTransitivePackageVersionsWithFourPartsForMultipleTargetFrameworks()
{
await TestDiscoveryAsync(
workspacePath: "",
files:
[
("myproj.csproj", """
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.0;net8.0</TargetFrameworks>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="AWSSDK.S3" Version="3.7.307.29" />
</ItemGroup>
</Project>
""")
],
expectedResult: new()
{
FilePath = "",
Projects = [
new()
{
FilePath = "myproj.csproj",
Dependencies = [
new("Microsoft.NET.Sdk", null, DependencyType.MSBuildSdk),
new("AWSSDK.S3", "3.7.307.29", DependencyType.PackageReference, TargetFrameworks: ["net8.0", "netstandard2.0"], IsDirect: true),
new("AWSSDK.Core", "3.7.303.27", DependencyType.Unknown, TargetFrameworks: ["net8.0", "netstandard2.0"], IsTransitive: true),
new("Microsoft.Bcl.AsyncInterfaces", "1.1.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
new("NETStandard.Library", "2.0.3", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
new("System.Runtime.CompilerServices.Unsafe", "4.5.2", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
new("System.Threading.Tasks.Extensions", "4.5.2", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
],
Properties = [
new("TargetFrameworks", "netstandard2.0;net8.0", "myproj.csproj"),
],
TargetFrameworks = ["net8.0", "netstandard2.0"],
ReferencedProjectPaths = [],
}
],
}
);
}
}
}
Expand Up @@ -114,7 +114,7 @@ private static async Task<ImmutableArray<Dependency>> GetTransitiveDependencies(
transitiveDependencies[dependency.Name] = existingDependency with
{
// Revisit this logic. We may want to return each dependency instead of merging them.
Version = SemanticVersion.Parse(existingDependency.Version!) > SemanticVersion.Parse(dependency.Version!)
Version = NuGetVersion.Parse(existingDependency.Version!) > NuGetVersion.Parse(dependency.Version!)
? existingDependency.Version
: dependency.Version,
TargetFrameworks = existingDependency.TargetFrameworks is not null && dependency.TargetFrameworks is not null
Expand Down

0 comments on commit ac4d094

Please sign in to comment.