diff options
| author | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2023-03-03 16:30:39 +0900 |
|---|---|---|
| committer | git <svn-admin@ruby-lang.org> | 2023-03-05 23:52:28 +0000 |
| commit | bab809d98f2a0a8a23efd62df750beccbf1b35d9 (patch) | |
| tree | 24a26c1523d7146cbd2b30a0635af98592a7ae89 | |
| parent | fc5482d0889f174f39395048352e7a2a88b133ec (diff) | |
[rubygems/rubygems] Introduce Gem::Specification.find_by_full_name for finding conbination of name and version for gemspec
https://github.com/rubygems/rubygems/commit/0430551215
| -rw-r--r-- | lib/rubygems/specification.rb | 6 | ||||
| -rw-r--r-- | test/rubygems/test_gem_specification.rb | 17 |
2 files changed, 23 insertions, 0 deletions
diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb index 01798fb8a2..d4640c12f0 100644 --- a/lib/rubygems/specification.rb +++ b/lib/rubygems/specification.rb @@ -1022,6 +1022,12 @@ class Gem::Specification < Gem::BasicSpecification end ## + # Find the best specification matching a +full_name+. + def self.find_by_full_name(full_name) + stubs.find {|s| s.full_name == full_name }&.to_spec + end + + ## # Return the best specification that contains the file matching +path+. def self.find_by_path(path) diff --git a/test/rubygems/test_gem_specification.rb b/test/rubygems/test_gem_specification.rb index 1952192aba..56ca7acaf2 100644 --- a/test/rubygems/test_gem_specification.rb +++ b/test/rubygems/test_gem_specification.rb @@ -3726,6 +3726,23 @@ end assert Gem::Specification.find_by_name "b", ">1" end + def test_find_by_full_name + pl = Gem::Platform.new "x86_64-linux" + + a = util_spec "a", "1" + install_specs a + + a_pl = util_spec("a", "1") {|s| s.platform = pl } + install_specs a_pl + + assert_equal a, Gem::Specification.find_by_full_name("a-1") + assert_equal a_pl, Gem::Specification.find_by_full_name("a-1-x86_64-linux") + + assert_nil Gem::Specification.find_by_full_name("a-2") + assert_nil Gem::Specification.find_by_full_name("b-1") + assert_nil Gem::Specification.find_by_full_name("a-1-arm64-linux") + end + def test_find_by_path a = util_spec "foo", "1", nil, "lib/foo.rb" |
