From eb7d47cafb79be696301f0f09bf72a21ba24d845 Mon Sep 17 00:00:00 2001 From: Justin Spencer Date: Wed, 15 Feb 2023 21:51:12 +0000 Subject: [PATCH] Use "gem" instead of "rubygems" to match purl spec --- src/packageurl/contrib/purl2url.py | 4 ++-- src/packageurl/contrib/url2purl.py | 2 +- tests/contrib/data/url2purl.json | 28 ++++++++++++++-------------- tests/contrib/test_purl2url.py | 12 ++++++------ 4 files changed, 23 insertions(+), 23 deletions(-) diff --git a/src/packageurl/contrib/purl2url.py b/src/packageurl/contrib/purl2url.py index 5a9c061..22588b6 100644 --- a/src/packageurl/contrib/purl2url.py +++ b/src/packageurl/contrib/purl2url.py @@ -151,7 +151,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. @@ -255,7 +255,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 0f51b2e..d50b799 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.python.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 ab92a05..fbd4100 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.python.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.python.org/packages/source/p/python-openid/python-openid-2.2.5.zip": "pkg:pypi/python-openid@2.2.5", "https://pypi.python.org/packages/38/e2/b23434f4030bbb1af3bcdbb2ecff6b11cf2e467622446ce66a08e99f2ea9/pluggy-0.4.0.zip#md5=447a92368175965d2fbacaef9f3df842": "pkg:pypi/pluggy@0.4.0", @@ -257,4 +257,4 @@ "http://apt-rpm.org/": null, "": null, "https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/android-notifier/android-notifier-desktop-0.5.1-1.i386.rpm": "pkg:generic/code.google.com/android-notifier?download_url=https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/android-notifier/android-notifier-desktop-0.5.1-1.i386.rpm" -} \ No newline at end of file +} diff --git a/tests/contrib/test_purl2url.py b/tests/contrib/test_purl2url.py index 15d52e2..439a788 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", @@ -67,7 +67,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", @@ -82,7 +82,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:gitlab/tg1999/firebase@1a122122": None, "pkg:pypi/sortedcontainers@2.4.0": None, @@ -98,7 +98,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", ], @@ -118,7 +118,7 @@ def test_purl2url_get_inferred_urls(): "pkg:github/tg1999/fetchcode": ["https://github.com/tg1999/fetchcode"], "pkg:gitlab/tg1999/firebase@1a122122": ["https://gitlab.com/tg1999/firebase"], "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": [], }