From a96bcf2c2a4433b1e7701dffbb0ca726e2690e84 Mon Sep 17 00:00:00 2001 From: Helio Frota <00hf11@gmail.com> Date: Tue, 26 Aug 2025 06:33:27 -0300 Subject: [PATCH 01/14] chore: fix cargo metadata link --- Cargo.toml | 2 +- README.md | 4 ++-- src/lib.rs | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index e842f8e..1f98c16 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,7 +9,7 @@ authors = [ license = "MIT" description = "Rust implementation of the package url specification" documentation = "https://docs.rs/packageurl" -repository = "https://github.com/scm-rs/packageurl-rs" +repository = "https://github.com/scm-rs/packageurl.rs" readme = "README.md" keywords = ["purl", "package-url"] categories = ["parser-implementations", "encoding", "development-tools"] diff --git a/README.md b/README.md index adaf34b..600ad4b 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # -`packageurl-rs` [![Star me](https://img.shields.io/github/stars/scm-rs/packageurl.rs.svg?style=social&label=Star)](https://github.com/scm-rs/packageurl.rs/stargazers) +`packageurl.rs` [![Star me](https://img.shields.io/github/stars/scm-rs/packageurl.rs.svg?style=social&label=Star)](https://github.com/scm-rs/packageurl.rs/stargazers) *Read and generate Package URLs in Rust.* @@ -74,7 +74,7 @@ a changelog as part of the [GitHub releases](https://github.com/scm-rs/packageur ## 💭 Feedback Found a bug? Have an enhancement request? Head over to the -[GitHub issue tracker](https://github.com/scm-rs/packageurl-rs/issues) of the project if +[GitHub issue tracker](https://github.com/scm-rs/packageurl.rs/issues) of the project if you need to report or ask something. If you are filling in on a bug, please include as much information as you can about the issue, and try to recreate the same bug in a simple, easily reproducible situation. diff --git a/src/lib.rs b/src/lib.rs index ad4997b..f7f3f3c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -33,7 +33,7 @@ //! [`FromStr`]: https://doc.rust-lang.org/std/str/trait.FromStr.html //! [`PackageUrl`]: example_generated/struct.PackageUrl.html //! [`'static`]: https://doc.rust-lang.org/reference/items/static-items.html#static-lifetime-elision -#![doc(issue_tracker_base_url = "https://github.com/althonos/packageurl-rs/issues/")] +#![doc(issue_tracker_base_url = "https://github.com/althonos/packageurl.rs/issues/")] mod errors; mod parser; From 7ba0010cd41e9cecf495383cb53a0f7765676cfc Mon Sep 17 00:00:00 2001 From: Michael Lux Date: Wed, 20 Aug 2025 17:45:20 +0200 Subject: [PATCH 02/14] fix!: Enforce namespace restrictions and error handling for specific package types --- src/errors.rs | 2 ++ src/purl.rs | 20 ++++++++++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/errors.rs b/src/errors.rs index 8a19151..3c9d8d6 100644 --- a/src/errors.rs +++ b/src/errors.rs @@ -12,6 +12,8 @@ pub enum Error { InvalidKey(String), #[error("missing name")] MissingName, + #[error("no namespace allowed for type {0:?}")] + TypeProhibitsNamespace(String), #[error("invalid namespace component: {0:?}")] InvalidNamespaceComponent(String), #[error("missing scheme")] diff --git a/src/purl.rs b/src/purl.rs index 9678b15..7f17156 100644 --- a/src/purl.rs +++ b/src/purl.rs @@ -66,7 +66,7 @@ impl<'a> PackageUrl<'a> { /// cannot contain spaces. /// /// # Name - /// The package name will be canonicalize depending on the type: for instance, + /// The package name will be canonicalized depending on the type: for instance, /// 'bitbucket' packages have a case-insensitive name, so the name will be /// lowercased if needed. /// @@ -152,20 +152,31 @@ impl<'a> PackageUrl<'a> { } /// Assign a namespace to the package. - pub fn with_namespace(&mut self, namespace: N) -> &mut Self + pub fn with_namespace(&mut self, namespace: N) -> Result<&mut Self> where N: Into>, { + // Fail if namespace is prohibited for this type + if matches!( + self.ty.as_ref(), + "bitnami" | "cargo" | "cocoapods" | "conda" | "cran" | "gem" + | "hackage" | "mlflow" | "nuget" | "oci" | "pub" | "pypi" + ) { + return Err(Error::TypeProhibitsNamespace(self.ty.to_string())) + } + + // Lowercase namespace if needed for this type let mut n = namespace.into(); match self.ty.as_ref() { - "bitbucket" | "deb" | "github" | "golang" | "hex" | "rpm" => { + "apk" | "bitbucket" | "composer" | "deb" | "github" | "golang" + | "hex" | "qpkg" | "rpm" => { n = to_lowercase(n); } _ => {} } self.namespace = Some(n); - self + Ok(self) } /// Clear the namespace @@ -367,6 +378,7 @@ mod tests { let purl_string = PackageUrl::new("type", "name") .unwrap() .with_namespace("name/space") + .unwrap() .with_version("version") .with_subpath("sub/path") .unwrap() From c3bdbc852827baf8aa9fa467a3ba1ed1cd754066 Mon Sep 17 00:00:00 2001 From: Michael Lux Date: Wed, 20 Aug 2025 17:47:16 +0200 Subject: [PATCH 03/14] refactor!: Use `Result` for all `with_` methods, bump version --- src/purl.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/purl.rs b/src/purl.rs index 7f17156..43092ae 100644 --- a/src/purl.rs +++ b/src/purl.rs @@ -186,12 +186,12 @@ impl<'a> PackageUrl<'a> { } /// Assign a version to the package. - pub fn with_version(&mut self, version: V) -> &mut Self + pub fn with_version(&mut self, version: V) -> Result<&mut Self> where V: Into>, { self.version = Some(version.into()); - self + Ok(self) } /// Clear the version @@ -274,10 +274,10 @@ impl FromStr for PackageUrl<'static> { let mut purl = Self::new(ty, name)?; if let Some(ns) = namespace { - purl.with_namespace(ns); + purl.with_namespace(ns)?; } if let Some(v) = version { - purl.with_version(v); + purl.with_version(v)?; } if let Some(sp) = subpath { purl.with_subpath(sp)?; @@ -380,6 +380,7 @@ mod tests { .with_namespace("name/space") .unwrap() .with_version("version") + .unwrap() .with_subpath("sub/path") .unwrap() .add_qualifier("k1", "v1") From c7a168404aefe9f120202ddfb3cc68740d5d9e50 Mon Sep 17 00:00:00 2001 From: Michael Lux Date: Thu, 21 Aug 2025 07:44:35 +0200 Subject: [PATCH 04/14] chore: update deps --- Cargo.toml | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 1f98c16..bcafc66 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "packageurl" -version = "0.5.0" +version = "0.6.0-rc.1" edition = "2021" authors = [ "Martin Larralde ", @@ -16,20 +16,19 @@ categories = ["parser-implementations", "encoding", "development-tools"] rust-version = "1.82.0" [dependencies] -percent-encoding = "2.1.0" -thiserror = "2.0.12" +percent-encoding = "2" +thiserror = "2" -memchr = { version = "2.4.0", optional = true } -serde = { version = "1.0.0", optional = true, features = ["derive"] } +memchr = { version = "2", optional = true } +serde = { version = "1", optional = true, features = ["derive"] } [features] default = [] [dev-dependencies] -criterion = "0.5.1" -rstest = "0.25.0" -serde = { version = "1.0.0", features = ["derive"] } -serde_json = "1.0.13" +criterion = "0.7" +serde = { version = "1", features = ["derive"] } +serde_json = "1" url = "2" [[bench]] From 9b37c290cd9b675236004c3cf5f0cf86f308d4ba Mon Sep 17 00:00:00 2001 From: Michael Lux Date: Thu, 21 Aug 2025 07:51:27 +0200 Subject: [PATCH 05/14] chore: fix formatting --- src/purl.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/purl.rs b/src/purl.rs index 43092ae..cc38d6e 100644 --- a/src/purl.rs +++ b/src/purl.rs @@ -157,19 +157,19 @@ impl<'a> PackageUrl<'a> { N: Into>, { // Fail if namespace is prohibited for this type - if matches!( - self.ty.as_ref(), - "bitnami" | "cargo" | "cocoapods" | "conda" | "cran" | "gem" - | "hackage" | "mlflow" | "nuget" | "oci" | "pub" | "pypi" - ) { - return Err(Error::TypeProhibitsNamespace(self.ty.to_string())) + match self.ty.as_ref() { + "bitnami" | "cargo" | "cocoapods" | "conda" | "cran" | "gem" | "hackage" | "mlflow" + | "nuget" | "oci" | "pub" | "pypi" => { + return Err(Error::TypeProhibitsNamespace(self.ty.to_string())); + } + _ => {} } // Lowercase namespace if needed for this type let mut n = namespace.into(); match self.ty.as_ref() { - "apk" | "bitbucket" | "composer" | "deb" | "github" | "golang" - | "hex" | "qpkg" | "rpm" => { + "apk" | "bitbucket" | "composer" | "deb" | "github" | "golang" | "hex" | "qpkg" + | "rpm" => { n = to_lowercase(n); } _ => {} From b93b741d49d90afc2e8d4075f3aeee421e6d9fc2 Mon Sep 17 00:00:00 2001 From: Jim Crossley Date: Fri, 28 Nov 2025 10:14:01 -0500 Subject: [PATCH 06/14] fix: introduce 2nd encode set to handle encoded slashes in names Fixes: #28 If upstream decides that slashes in qualifiers should be encoded to %2F, then we can remove the name-specific encode set and `.add(b'/')` to the ENCODE_SET constant. --- src/purl.rs | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/purl.rs b/src/purl.rs index cc38d6e..cec2ff5 100644 --- a/src/purl.rs +++ b/src/purl.rs @@ -26,8 +26,6 @@ const ENCODE_SET: &AsciiSet = &percent_encoding::CONTROLS .add(b'?') .add(b'{') .add(b'}') - // .add(b'/') - // .add(b':') .add(b';') .add(b'=') .add(b'+') @@ -38,6 +36,8 @@ const ENCODE_SET: &AsciiSet = &percent_encoding::CONTROLS .add(b'^') .add(b'|'); +const NAME_ENCODE_SET: &AsciiSet = &ENCODE_SET.add(b'/'); + /// A Package URL. #[derive(Debug, Clone, PartialEq, Eq)] #[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] @@ -301,13 +301,13 @@ impl Display for PackageUrl<'_> { // Namespace: percent-encode each component if let Some(ref ns) = self.namespace { - for component in ns.split('/').map(|s| s.encode(ENCODE_SET)) { + for component in ns.split('/').map(|s| s.encode(NAME_ENCODE_SET)) { component.fmt(f).and(f.write_str("/"))?; } } // Name: percent-encode the name - self.name.encode(ENCODE_SET).fmt(f)?; + self.name.encode(NAME_ENCODE_SET).fmt(f)?; // Version: percent-encode the version if let Some(ref v) = self.version { @@ -393,11 +393,20 @@ mod tests { #[test] fn test_percent_encoding_idempotent() { - let orig = "pkg:brew/openssl%25401.1@1.1.1w"; + let orig = "pkg:brew/open%2Fssl%25401.1@1.1.1w"; let round_trip = orig.parse::().unwrap().to_string(); assert_eq!(orig, round_trip); } + #[test] + fn test_percent_encoded_name() { + let raw_purl = "pkg:type/name/space/first%2Fname"; + let purl = PackageUrl::from_str(raw_purl).unwrap(); + assert_eq!(purl.ty(), "type"); + assert_eq!(purl.namespace(), Some("name/space")); + assert_eq!(purl.name(), "first/name"); + } + #[test] fn test_percent_encoding_qualifier() { let mut purl = "pkg:deb/ubuntu/gnome-calculator@1:41.1-2ubuntu2" From d14ae9a8096e7bad19d6782df1f5ca5249953e39 Mon Sep 17 00:00:00 2001 From: Jim Crossley Date: Mon, 1 Dec 2025 08:46:14 -0500 Subject: [PATCH 07/14] fix: clippy --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index bcafc66..4cfa7d2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,7 +13,7 @@ repository = "https://github.com/scm-rs/packageurl.rs" readme = "README.md" keywords = ["purl", "package-url"] categories = ["parser-implementations", "encoding", "development-tools"] -rust-version = "1.82.0" +rust-version = "1.83.0" [dependencies] percent-encoding = "2" From cdfc9bbf073209108f1657c6d971efceba3ae8d0 Mon Sep 17 00:00:00 2001 From: Jens Reimann Date: Tue, 2 Dec 2025 09:13:51 +0100 Subject: [PATCH 08/14] chore: release 0.6.0-rc.2 --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 4cfa7d2..6d20f0d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "packageurl" -version = "0.6.0-rc.1" +version = "0.6.0-rc.2" edition = "2021" authors = [ "Martin Larralde ", From fe59d55db802e7f435bba94cef19b8f69934dd52 Mon Sep 17 00:00:00 2001 From: Jens Reimann Date: Tue, 2 Dec 2025 09:16:47 +0100 Subject: [PATCH 09/14] chore: prepare for 0.6.0 Also switch to edition 2024 for the release, this should make it easier working with dependencies. --- Cargo.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 6d20f0d..82a4b89 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "packageurl" -version = "0.6.0-rc.2" -edition = "2021" +version = "0.6.0" +edition = "2024" authors = [ "Martin Larralde ", "Jens Reimann ", From 2705b8eefd23941e9941105083bd8f671c39df4e Mon Sep 17 00:00:00 2001 From: Jens Reimann Date: Tue, 2 Dec 2025 09:27:15 +0100 Subject: [PATCH 10/14] build: uptick MSRV because of edition 2024 --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 82a4b89..d84c1c7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,7 +13,7 @@ repository = "https://github.com/scm-rs/packageurl.rs" readme = "README.md" keywords = ["purl", "package-url"] categories = ["parser-implementations", "encoding", "development-tools"] -rust-version = "1.83.0" +rust-version = "1.85.0" [dependencies] percent-encoding = "2" From 02bf8e4af8cf02aa0437fa2b2c78db61c984e0eb Mon Sep 17 00:00:00 2001 From: Jens Reimann Date: Tue, 2 Dec 2025 09:29:52 +0100 Subject: [PATCH 11/14] style: apply cargo fmt 2024 --- benches/bench.rs | 2 +- src/purl.rs | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/benches/bench.rs b/benches/bench.rs index a992727..2a38484 100644 --- a/benches/bench.rs +++ b/benches/bench.rs @@ -1,4 +1,4 @@ -use criterion::{criterion_group, criterion_main, Criterion}; +use criterion::{Criterion, criterion_group, criterion_main}; use packageurl::PackageUrl; use std::str::FromStr; diff --git a/src/purl.rs b/src/purl.rs index cec2ff5..9e78698 100644 --- a/src/purl.rs +++ b/src/purl.rs @@ -12,7 +12,7 @@ use serde::{Deserialize, Serialize}; use super::errors::Error; use super::errors::Result; use super::parser; -use super::utils::{to_lowercase, PercentCodec}; +use super::utils::{PercentCodec, to_lowercase}; use super::validation; const ENCODE_SET: &AsciiSet = &percent_encoding::CONTROLS @@ -418,7 +418,10 @@ mod tests { ) .unwrap(); let encoded = purl.to_string(); - assert_eq!(encoded, "pkg:deb/ubuntu/gnome-calculator@1:41.1-2ubuntu2?vcs_url=git%2Bhttps://salsa.debian.org/gnome-team/gnome-calculator.git%40debian/1%2541.1-2"); + assert_eq!( + encoded, + "pkg:deb/ubuntu/gnome-calculator@1:41.1-2ubuntu2?vcs_url=git%2Bhttps://salsa.debian.org/gnome-team/gnome-calculator.git%40debian/1%2541.1-2" + ); } #[cfg(feature = "serde")] From ad08b47071327c8899f6bf0bf365fe016990daca Mon Sep 17 00:00:00 2001 From: Keshav Priyadarshi Date: Wed, 27 Aug 2025 17:45:24 +0530 Subject: [PATCH 12/14] test: run tests using reference data from purl-spec Signed-off-by: Keshav Priyadarshi --- tests/spec/macros.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/spec/macros.rs b/tests/spec/macros.rs index 467c551..80030ac 100644 --- a/tests/spec/macros.rs +++ b/tests/spec/macros.rs @@ -125,7 +125,6 @@ pub fn run_tests_from_spec(path: &Path) { } } - macro_rules! generate_json_tests { ($($test_name:ident => $file_path:expr),* $(,)?) => { $( From a14b15e8af273caef6c52c3d05b592336545da06 Mon Sep 17 00:00:00 2001 From: Jono Yang Date: Thu, 4 Dec 2025 12:12:27 -0800 Subject: [PATCH 13/14] chore: update purl-spec submodule and address issues from that Signed-off-by: Jono Yang --- src/purl.rs | 11 +++++------ tests/spec/mod.rs | 1 - tests/spec/purl-spec | 2 +- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/purl.rs b/src/purl.rs index 9e78698..d1f5fab 100644 --- a/src/purl.rs +++ b/src/purl.rs @@ -34,9 +34,8 @@ const ENCODE_SET: &AsciiSet = &percent_encoding::CONTROLS .add(b'[') .add(b']') .add(b'^') - .add(b'|'); - -const NAME_ENCODE_SET: &AsciiSet = &ENCODE_SET.add(b'/'); + .add(b'|') + .add(b'/'); /// A Package URL. #[derive(Debug, Clone, PartialEq, Eq)] @@ -301,13 +300,13 @@ impl Display for PackageUrl<'_> { // Namespace: percent-encode each component if let Some(ref ns) = self.namespace { - for component in ns.split('/').map(|s| s.encode(NAME_ENCODE_SET)) { + for component in ns.split('/').map(|s| s.encode(ENCODE_SET)) { component.fmt(f).and(f.write_str("/"))?; } } // Name: percent-encode the name - self.name.encode(NAME_ENCODE_SET).fmt(f)?; + self.name.encode(ENCODE_SET).fmt(f)?; // Version: percent-encode the version if let Some(ref v) = self.version { @@ -420,7 +419,7 @@ mod tests { let encoded = purl.to_string(); assert_eq!( encoded, - "pkg:deb/ubuntu/gnome-calculator@1:41.1-2ubuntu2?vcs_url=git%2Bhttps://salsa.debian.org/gnome-team/gnome-calculator.git%40debian/1%2541.1-2" + "pkg:deb/ubuntu/gnome-calculator@1:41.1-2ubuntu2?vcs_url=git%2Bhttps:%2F%2Fsalsa.debian.org%2Fgnome-team%2Fgnome-calculator.git%40debian%2F1%2541.1-2" ); } diff --git a/tests/spec/mod.rs b/tests/spec/mod.rs index 13d7a17..07d0f59 100644 --- a/tests/spec/mod.rs +++ b/tests/spec/mod.rs @@ -8,7 +8,6 @@ mod testcase; generate_json_tests! { alpm_test => "tests/spec/purl-spec/tests/types/alpm-test.json", apk_test => "tests/spec/purl-spec/tests/types/apk-test.json", - bintray_test => "tests/spec/purl-spec/tests/types/bintray-test.json", bitbucket_test => "tests/spec/purl-spec/tests/types/bitbucket-test.json", bitnami_test => "tests/spec/purl-spec/tests/types/bitnami-test.json", cargo_test => "tests/spec/purl-spec/tests/types/cargo-test.json", diff --git a/tests/spec/purl-spec b/tests/spec/purl-spec index 96d6f8c..52055b1 160000 --- a/tests/spec/purl-spec +++ b/tests/spec/purl-spec @@ -1 +1 @@ -Subproject commit 96d6f8c4123d4a6a5c2bbc90cf61fca834f421d9 +Subproject commit 52055b1547819f4044b4451623452af263d8f3be From bf67025f18e8894d37245356710296dff036f3bc Mon Sep 17 00:00:00 2001 From: Jono Yang Date: Thu, 4 Dec 2025 12:23:40 -0800 Subject: [PATCH 14/14] chore: enable certain disabled tests and make changes to pass Signed-off-by: Jono Yang --- src/purl.rs | 9 +++++++-- tests/spec/macros.rs | 4 ++-- tests/spec/mod.rs | 8 ++++---- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/purl.rs b/src/purl.rs index d1f5fab..f3bff4f 100644 --- a/src/purl.rs +++ b/src/purl.rs @@ -86,7 +86,7 @@ impl<'a> PackageUrl<'a> { t = to_lowercase(t); // lowercase name if required by type and needed match t.as_ref() { - "bitbucket" | "deb" | "github" | "hex" | "npm" => { + "bitbucket" | "deb" | "github" | "hex" | "npm" | "composer" | "mlflow" => { n = to_lowercase(n); } "pypi" => { @@ -189,7 +189,12 @@ impl<'a> PackageUrl<'a> { where V: Into>, { - self.version = Some(version.into()); + let mut v = version.into(); + if self.ty.as_ref() == "huggingface" { + v = to_lowercase(v); + } + + self.version = Some(v); Ok(self) } diff --git a/tests/spec/macros.rs b/tests/spec/macros.rs index 80030ac..d2b1513 100644 --- a/tests/spec/macros.rs +++ b/tests/spec/macros.rs @@ -57,11 +57,11 @@ pub fn run_build_test(case: &SpecTestCase) { let mut purl = purl_result.unwrap(); if let Some(ref ns) = input.namespace { - purl.with_namespace(ns.as_ref()); + let _ = purl.with_namespace(ns.as_ref()); } if let Some(ref v) = input.version { - purl.with_version(v.as_ref()); + let _ = purl.with_version(v.as_ref()); } if let Some(ref sp) = input.subpath { diff --git a/tests/spec/mod.rs b/tests/spec/mod.rs index 07d0f59..1a6d0b0 100644 --- a/tests/spec/mod.rs +++ b/tests/spec/mod.rs @@ -12,11 +12,11 @@ generate_json_tests! { bitnami_test => "tests/spec/purl-spec/tests/types/bitnami-test.json", cargo_test => "tests/spec/purl-spec/tests/types/cargo-test.json", cocoapods_test => "tests/spec/purl-spec/tests/types/cocoapods-test.json", - // composer_test => "tests/spec/purl-spec/tests/types/composer-test.json", + composer_test => "tests/spec/purl-spec/tests/types/composer-test.json", // conan_test => "tests/spec/purl-spec/tests/types/conan-test.json", conda_test => "tests/spec/purl-spec/tests/types/conda-test.json", // cpan_test => "tests/spec/purl-spec/tests/types/cpan-test.json", - // cran_test => "tests/spec/purl-spec/tests/types/cran-test.json", + cran_test => "tests/spec/purl-spec/tests/types/cran-test.json", deb_test => "tests/spec/purl-spec/tests/types/deb-test.json", docker_test => "tests/spec/purl-spec/tests/types/docker-test.json", gem_test => "tests/spec/purl-spec/tests/types/gem-test.json", @@ -25,9 +25,9 @@ generate_json_tests! { golang_test => "tests/spec/purl-spec/tests/types/golang-test.json", hackage_test => "tests/spec/purl-spec/tests/types/hackage-test.json", hex_test => "tests/spec/purl-spec/tests/types/hex-test.json", - // huggingface_test => "tests/spec/purl-spec/tests/types/huggingface-test.json", + huggingface_test => "tests/spec/purl-spec/tests/types/huggingface-test.json", luarocks_test => "tests/spec/purl-spec/tests/types/luarocks-test.json", - // maven_test => "tests/spec/purl-spec/tests/types/maven-test.json", + maven_test => "tests/spec/purl-spec/tests/types/maven-test.json", // mlflow_test => "tests/spec/purl-spec/tests/types/mlflow-test.json", // npm_test => "tests/spec/purl-spec/tests/types/npm-test.json", nuget_test => "tests/spec/purl-spec/tests/types/nuget-test.json",