[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
This commit is contained in:
Hiroshi SHIBATA 2023-03-03 16:30:39 +09:00 committed by git
parent fc5482d088
commit bab809d98f
2 changed files with 23 additions and 0 deletions

View File

@ -1021,6 +1021,12 @@ class Gem::Specification < Gem::BasicSpecification
Gem::Dependency.new(name, *requirements).to_spec
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+.

View File

@ -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"