From bdbc8c8fc6335b6e79fdd157d483478479d26c86 Mon Sep 17 00:00:00 2001 From: juspence <87657842+juspence@users.noreply.github.com> Date: Fri, 8 Dec 2023 01:08:18 -0500 Subject: [PATCH] Use "gem" instead of "rubygems" to match purl spec (#114) Co-authored-by: tdruez <489057+tdruez@users.noreply.github.com> --- src/packageurl/contrib/purl2url.py | 4 ++-- src/packageurl/contrib/url2purl.py | 2 +- tests/contrib/data/url2purl.json | 26 +++++++++++++------------- tests/contrib/test_purl2url.py | 12 ++++++------ 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/packageurl/contrib/purl2url.py b/src/packageurl/contrib/purl2url.py index be8a534..a4fd3c0 100644 --- a/src/packageurl/contrib/purl2url.py +++ b/src/packageurl/contrib/purl2url.py @@ -171,7 +171,7 @@ def build_gitlab_repo_url(purl): return f"https://gitlab.com/{namespace}/{name}" -@repo_router.route("pkg:rubygems/.*") +@repo_router.route("pkg:gem/.*") def build_rubygems_repo_url(purl): """ Return a rubygems repo URL from the `purl` string. @@ -291,7 +291,7 @@ def build_cargo_download_url(purl): return f"https://crates.io/api/v1/crates/{name}/{version}/download" -@download_router.route("pkg:rubygems/.*") +@download_router.route("pkg:gem/.*") def build_rubygems_download_url(purl): """ Return a rubygems download URL from the `purl` string. diff --git a/src/packageurl/contrib/url2purl.py b/src/packageurl/contrib/url2purl.py index a2d5e54..ac6b954 100644 --- a/src/packageurl/contrib/url2purl.py +++ b/src/packageurl/contrib/url2purl.py @@ -274,7 +274,7 @@ def build_rubygems_purl(uri): rubygems_pattern = ( r"^https?://rubygems.org/(downloads|gems)/(?P.+)-(?P.+)(\.gem)$" ) - return purl_from_pattern("rubygems", rubygems_pattern, uri) + return purl_from_pattern("gem", rubygems_pattern, uri) # https://pypi.org/packages/source/a/anyjson/anyjson-0.3.3.tar.gz diff --git a/tests/contrib/data/url2purl.json b/tests/contrib/data/url2purl.json index 20a652b..62a7bbc 100644 --- a/tests/contrib/data/url2purl.json +++ b/tests/contrib/data/url2purl.json @@ -108,19 +108,19 @@ "https://www.npmjs.org/package/": null, "http://rubygems.org/downloads/": null, "http://rubygems.org/downloads/macaddr-1.6.1": null, - "http://rubygems.org/downloads/macaddr-1.6.1.gem": "pkg:rubygems/macaddr@1.6.1", - "http://rubygems.org/downloads/open4-1.3.0.gem": "pkg:rubygems/open4@1.3.0", - "https://rubygems.org/downloads/actionmailer-4.0.3.gem": "pkg:rubygems/actionmailer@4.0.3", - "https://rubygems.org/downloads/activerecord-deprecated_finders-1.0.3.gem": "pkg:rubygems/activerecord-deprecated_finders@1.0.3", - "https://rubygems.org/downloads/ejs-1.1.1.gem": "pkg:rubygems/ejs@1.1.1", - "https://rubygems.org/downloads/eventmachine-0.12.11.cloudfoundry.3.gem": "pkg:rubygems/eventmachine@0.12.11.cloudfoundry.3", - "https://rubygems.org/downloads/ffi-1.9.3.gem": "pkg:rubygems/ffi@1.9.3", - "https://rubygems.org/downloads/jwt-0.1.8.gem": "pkg:rubygems/jwt@0.1.8", - "https://rubygems.org/downloads/ref-1.0.5.gem": "pkg:rubygems/ref@1.0.5", - "https://rubygems.org/downloads/talentbox-delayed_job_sequel-4.0.0.gem": "pkg:rubygems/talentbox-delayed_job_sequel@4.0.0", - "https://rubygems.org/downloads/unf-0.1.3.gem": "pkg:rubygems/unf@0.1.3", - "https://rubygems.org/downloads/yajl-ruby-1.2.0.gem": "pkg:rubygems/yajl-ruby@1.2.0", - "https://rubygems.org/gems/i18n-js-3.0.11.gem": "pkg:rubygems/i18n-js@3.0.11", + "http://rubygems.org/downloads/macaddr-1.6.1.gem": "pkg:gem/macaddr@1.6.1", + "http://rubygems.org/downloads/open4-1.3.0.gem": "pkg:gem/open4@1.3.0", + "https://rubygems.org/downloads/actionmailer-4.0.3.gem": "pkg:gem/actionmailer@4.0.3", + "https://rubygems.org/downloads/activerecord-deprecated_finders-1.0.3.gem": "pkg:gem/activerecord-deprecated_finders@1.0.3", + "https://rubygems.org/downloads/ejs-1.1.1.gem": "pkg:gem/ejs@1.1.1", + "https://rubygems.org/downloads/eventmachine-0.12.11.cloudfoundry.3.gem": "pkg:gem/eventmachine@0.12.11.cloudfoundry.3", + "https://rubygems.org/downloads/ffi-1.9.3.gem": "pkg:gem/ffi@1.9.3", + "https://rubygems.org/downloads/jwt-0.1.8.gem": "pkg:gem/jwt@0.1.8", + "https://rubygems.org/downloads/ref-1.0.5.gem": "pkg:gem/ref@1.0.5", + "https://rubygems.org/downloads/talentbox-delayed_job_sequel-4.0.0.gem": "pkg:gem/talentbox-delayed_job_sequel@4.0.0", + "https://rubygems.org/downloads/unf-0.1.3.gem": "pkg:gem/unf@0.1.3", + "https://rubygems.org/downloads/yajl-ruby-1.2.0.gem": "pkg:gem/yajl-ruby@1.2.0", + "https://rubygems.org/gems/i18n-js-3.0.11.gem": "pkg:gem/i18n-js@3.0.11", "https://pypi.org/packages/source/z/zc.recipe.egg/zc.recipe.egg-2.0.0.tar.gz": "pkg:pypi/zc.recipe.egg@2.0.0", "https://pypi.org/project/widgetsnbextension": "pkg:pypi/widgetsnbextension", "https://pypi.org/project/widgetsnbextension/3.0.7/": "pkg:pypi/widgetsnbextension@3.0.7", diff --git a/tests/contrib/test_purl2url.py b/tests/contrib/test_purl2url.py index 6bfb94c..b471ff0 100644 --- a/tests/contrib/test_purl2url.py +++ b/tests/contrib/test_purl2url.py @@ -38,8 +38,8 @@ def test_purl2url_get_repo_url(): "pkg:github/tg1999": None, "pkg:cargo/rand@0.7.2": "https://crates.io/crates/rand/0.7.2", "pkg:cargo/abc": "https://crates.io/crates/abc", - "pkg:rubygems/bundler@2.3.23": "https://rubygems.org/gems/bundler/versions/2.3.23", - "pkg:gem/package-name": None, + "pkg:gem/bundler@2.3.23": "https://rubygems.org/gems/bundler/versions/2.3.23", + "pkg:rubygems/package-name": None, "pkg:bitbucket/birkenfeld/pygments-main": "https://bitbucket.org/birkenfeld/pygments-main", "pkg:bitbucket/birkenfeld/pygments-main@244fd47e07d1014f0aed9c": "https://bitbucket.org/birkenfeld/pygments-main", "pkg:bitbucket/birkenfeld/pygments-main@master#views": "https://bitbucket.org/birkenfeld/pygments-main", @@ -70,7 +70,7 @@ def test_purl2url_get_download_url(): purls_url = { # Generated "pkg:cargo/rand@0.7.2": "https://crates.io/api/v1/crates/rand/0.7.2/download", - "pkg:rubygems/bundler@2.3.23": "https://rubygems.org/downloads/bundler-2.3.23.gem", + "pkg:gem/bundler@2.3.23": "https://rubygems.org/downloads/bundler-2.3.23.gem", "pkg:npm/is-npm@1.0.0": "http://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", "pkg:hackage/cli-extras@0.2.0.0": "https://hackage.haskell.org/package/cli-extras-0.2.0.0/cli-extras-0.2.0.0.tar.gz", "pkg:nuget/System.Text.Json@6.0.6": "https://www.nuget.org/api/v2/package/System.Text.Json/6.0.6", @@ -89,7 +89,7 @@ def test_purl2url_get_download_url(): # Not-supported "pkg:github/tg1999/fetchcode": None, "pkg:cargo/abc": None, - "pkg:gem/package-name": None, + "pkg:rubygems/package-name": None, "pkg:bitbucket/birkenfeld": None, "pkg:pypi/sortedcontainers@2.4.0": None, "pkg:golang/xorm.io/xorm@v0.8.2": None, @@ -106,7 +106,7 @@ def test_purl2url_get_inferred_urls(): "https://crates.io/crates/rand/0.7.2", "https://crates.io/api/v1/crates/rand/0.7.2/download", ], - "pkg:rubygems/bundler@2.3.23": [ + "pkg:gem/bundler@2.3.23": [ "https://rubygems.org/gems/bundler/versions/2.3.23", "https://rubygems.org/downloads/bundler-2.3.23.gem", ], @@ -129,7 +129,7 @@ def test_purl2url_get_inferred_urls(): "https://gitlab.com/tg1999/firebase/-/archive/1a122122/firebase-1a122122.tar.gz", ], "pkg:pypi/sortedcontainers@2.4.0": ["https://pypi.org/project/sortedcontainers/2.4.0/"], - "pkg:gem/package-name": [], + "pkg:rubygems/package-name": [], "pkg:bitbucket/birkenfeld": [], }