зеркало из https://github.com/github/ruby.git
[rubygems/rubygems] Unify LockfileParser loading of SPECS section
Ensure unrecognized SPECS types are ignored https://github.com/rubygems/rubygems/commit/5b33e91075
This commit is contained in:
Родитель
0ae7f2d1ac
Коммит
d43765c3a9
|
@ -110,21 +110,9 @@ module Bundler
|
||||||
def parse_source(line)
|
def parse_source(line)
|
||||||
case line
|
case line
|
||||||
when SPECS
|
when SPECS
|
||||||
case @type
|
return unless TYPES.key?(@type)
|
||||||
when PATH
|
@current_source = TYPES[@type].from_lock(@opts)
|
||||||
@current_source = TYPES[@type].from_lock(@opts)
|
@sources << @current_source
|
||||||
@sources << @current_source
|
|
||||||
when GIT
|
|
||||||
@current_source = TYPES[@type].from_lock(@opts)
|
|
||||||
@sources << @current_source
|
|
||||||
when GEM
|
|
||||||
@opts["remotes"] = Array(@opts.delete("remote")).reverse
|
|
||||||
@current_source = TYPES[@type].from_lock(@opts)
|
|
||||||
@sources << @current_source
|
|
||||||
when PLUGIN
|
|
||||||
@current_source = Plugin.source_from_lock(@opts)
|
|
||||||
@sources << @current_source
|
|
||||||
end
|
|
||||||
when OPTIONS
|
when OPTIONS
|
||||||
value = $2
|
value = $2
|
||||||
value = true if value == "true"
|
value = true if value == "true"
|
||||||
|
|
|
@ -197,7 +197,7 @@ module Bundler
|
||||||
# @param [Hash] The options that are present in the lock file
|
# @param [Hash] The options that are present in the lock file
|
||||||
# @return [API::Source] the instance of the class that handles the source
|
# @return [API::Source] the instance of the class that handles the source
|
||||||
# type passed in locked_opts
|
# type passed in locked_opts
|
||||||
def source_from_lock(locked_opts)
|
def from_lock(locked_opts)
|
||||||
src = source(locked_opts["type"])
|
src = source(locked_opts["type"])
|
||||||
|
|
||||||
src.new(locked_opts.merge("uri" => locked_opts["remote"]))
|
src.new(locked_opts.merge("uri" => locked_opts["remote"]))
|
||||||
|
|
|
@ -88,6 +88,7 @@ module Bundler
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.from_lock(options)
|
def self.from_lock(options)
|
||||||
|
options["remotes"] = Array(options.delete("remote")).reverse
|
||||||
new(options)
|
new(options)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -225,7 +225,7 @@ RSpec.describe Bundler::Plugin do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "#source_from_lock" do
|
describe "#from_lock" do
|
||||||
it "returns instance of registered class initialized with locked opts" do
|
it "returns instance of registered class initialized with locked opts" do
|
||||||
opts = { "type" => "l_source", "remote" => "xyz", "other" => "random" }
|
opts = { "type" => "l_source", "remote" => "xyz", "other" => "random" }
|
||||||
allow(index).to receive(:source_plugin).with("l_source") { "plugin_name" }
|
allow(index).to receive(:source_plugin).with("l_source") { "plugin_name" }
|
||||||
|
@ -236,7 +236,7 @@ RSpec.describe Bundler::Plugin do
|
||||||
|
|
||||||
expect(SClass).to receive(:new).
|
expect(SClass).to receive(:new).
|
||||||
with(hash_including("type" => "l_source", "uri" => "xyz", "other" => "random")) { s_instance }
|
with(hash_including("type" => "l_source", "uri" => "xyz", "other" => "random")) { s_instance }
|
||||||
expect(subject.source_from_lock(opts)).to be(s_instance)
|
expect(subject.from_lock(opts)).to be(s_instance)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче