зеркало из https://github.com/github/ruby.git
[rubygems/rubygems] Fix default gem priority when sorting specs
https://github.com/rubygems/rubygems/commit/8dbe1dbdc7 Co-authored-by: MSP-Greg <Greg.mpls@gmail.com>
This commit is contained in:
Родитель
8b843b0dc7
Коммит
5c573b7652
|
@ -98,6 +98,13 @@ class Gem::BasicSpecification
|
|||
File.dirname(loaded_from) == Gem.default_specifications_dir
|
||||
end
|
||||
|
||||
##
|
||||
# Regular gems take precedence over default gems
|
||||
|
||||
def default_gem_priority
|
||||
default_gem? ? 1 : -1
|
||||
end
|
||||
|
||||
##
|
||||
# Returns full path to the directory where gem's extensions are installed.
|
||||
|
||||
|
|
|
@ -832,6 +832,8 @@ class Gem::Specification < Gem::BasicSpecification
|
|||
next versions if versions.nonzero?
|
||||
platforms = Gem::Platform.sort_priority(b.platform) <=> Gem::Platform.sort_priority(a.platform)
|
||||
next platforms if platforms.nonzero?
|
||||
default_gem = a.default_gem_priority <=> b.default_gem_priority
|
||||
next default_gem if default_gem.nonzero?
|
||||
b.base_dir == Gem.path.first ? 1 : -1
|
||||
end
|
||||
end
|
||||
|
|
|
@ -489,6 +489,22 @@ class TestGemRequire < Gem::TestCase
|
|||
assert_equal %w[default-3.0], loaded_spec_names
|
||||
end
|
||||
|
||||
def test_default_gem_and_normal_gem_same_version
|
||||
default_gem_spec = new_default_spec("default", "3.0",
|
||||
nil, "default/gem.rb")
|
||||
install_default_gems(default_gem_spec)
|
||||
normal_gem_spec = util_spec("default", "3.0", nil,
|
||||
"lib/default/gem.rb")
|
||||
install_specs(normal_gem_spec)
|
||||
|
||||
# Load default ruby gems fresh as if we've just started a ruby script.
|
||||
Gem::Specification.reset
|
||||
|
||||
assert_require "default/gem"
|
||||
assert_equal %w[default-3.0], loaded_spec_names
|
||||
refute Gem.loaded_specs["default"].default_gem?
|
||||
end
|
||||
|
||||
def test_normal_gem_does_not_shadow_default_gem
|
||||
default_gem_spec = new_default_spec("foo", "2.0", nil, "foo.rb")
|
||||
install_default_gems(default_gem_spec)
|
||||
|
|
Загрузка…
Ссылка в новой задаче