From 37f14a14473c1811317099d08c5c2c6d5f27382d Mon Sep 17 00:00:00 2001 From: Rodney Richardson Date: Fri, 23 May 2025 13:19:09 +0100 Subject: [PATCH] Fix CargoComponent.PackageURL --- .../TypedComponent/CargoComponent.cs | 2 +- .../PurlGenerationTests.cs | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/Microsoft.ComponentDetection.Contracts/TypedComponent/CargoComponent.cs b/src/Microsoft.ComponentDetection.Contracts/TypedComponent/CargoComponent.cs index a59c95e88..a5106d11d 100644 --- a/src/Microsoft.ComponentDetection.Contracts/TypedComponent/CargoComponent.cs +++ b/src/Microsoft.ComponentDetection.Contracts/TypedComponent/CargoComponent.cs @@ -36,7 +36,7 @@ public CargoComponent(string name, string version, string author = null, string public override ComponentType Type => ComponentType.Cargo; - public override PackageURL PackageUrl => new PackageURL("cargo", string.Empty, this.Name, this.Version, null, string.Empty); + public override PackageURL PackageUrl => new PackageURL("cargo", null, this.Name, this.Version, null, null); protected override string ComputeId() => $"{this.Name} {this.Version} - {this.Type}"; } diff --git a/test/Microsoft.ComponentDetection.Contracts.Tests/PurlGenerationTests.cs b/test/Microsoft.ComponentDetection.Contracts.Tests/PurlGenerationTests.cs index a0834f7b7..a6024e061 100644 --- a/test/Microsoft.ComponentDetection.Contracts.Tests/PurlGenerationTests.cs +++ b/test/Microsoft.ComponentDetection.Contracts.Tests/PurlGenerationTests.cs @@ -109,4 +109,16 @@ public void CocoaPodNameShouldPurlWithCustomQualifier() packageOne.PackageUrl.ToString().Should().Be("pkg:cocoapods/afnetworking@4.0.1?repository_url=https://custom_repo.example.com/path/to/repo/specs.git"); } + + [TestMethod] + public void CargoShouldSupportPurl() + { + // https://github.com/package-url/purl-spec/blob/main/PURL-TYPES.rst#cargo + var packageOne = new CargoComponent("rand", "0.7.2"); + var packageTwo = new CargoComponent("rand", "0.7.3", "RodneyRichardson", "MIT", "https://custom_repo.example.com/path/to/repo/specs.git"); + + packageOne.PackageUrl.Type.Should().Be("cargo"); + packageOne.PackageUrl.ToString().Should().Be("pkg:cargo/rand@0.7.2"); + packageTwo.PackageUrl.ToString().Should().Be("pkg:cargo/rand@0.7.3"); + } }