Merge pull request #11211 from briancain/fixup/ensure-checksum-and-type-are-not-empty
Fixes #11207: Do not validate checksums if options are empty string
This commit is contained in:
commit
6831129720
|
@ -348,9 +348,15 @@ module Vagrant
|
||||||
end
|
end
|
||||||
|
|
||||||
if opts[:checksum] && opts[:checksum_type]
|
if opts[:checksum] && opts[:checksum_type]
|
||||||
env[:ui].detail(I18n.t("vagrant.actions.box.add.checksumming"))
|
if opts[:checksum].to_s.strip.empty?
|
||||||
validate_checksum(
|
@logger.warn("Given checksum is empty, cannot validate checksum for box")
|
||||||
opts[:checksum_type], opts[:checksum], box_url)
|
elsif opts[:checksum_type].to_s.strip.empty?
|
||||||
|
@logger.warn("Given checksum type is empty, cannot validate checksum for box")
|
||||||
|
else
|
||||||
|
env[:ui].detail(I18n.t("vagrant.actions.box.add.checksumming"))
|
||||||
|
validate_checksum(
|
||||||
|
opts[:checksum_type], opts[:checksum], box_url)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Add the box!
|
# Add the box!
|
||||||
|
|
|
@ -66,7 +66,8 @@ class FileChecksum
|
||||||
digest = CHECKSUM_MAP[type.to_s.to_sym]
|
digest = CHECKSUM_MAP[type.to_s.to_sym]
|
||||||
if digest.nil?
|
if digest.nil?
|
||||||
raise Vagrant::Errors::BoxChecksumInvalidType,
|
raise Vagrant::Errors::BoxChecksumInvalidType,
|
||||||
type: type.to_s
|
type: type.to_s,
|
||||||
|
types: CHECKSUM_MAP.keys.join(', ')
|
||||||
end
|
end
|
||||||
digest
|
digest
|
||||||
end
|
end
|
||||||
|
|
|
@ -578,7 +578,7 @@ en:
|
||||||
The specified checksum type is not supported by Vagrant: %{type}.
|
The specified checksum type is not supported by Vagrant: %{type}.
|
||||||
Vagrant supports the following checksum types:
|
Vagrant supports the following checksum types:
|
||||||
|
|
||||||
md5, sha1, sha256
|
%{types}
|
||||||
box_checksum_mismatch: |-
|
box_checksum_mismatch: |-
|
||||||
The checksum of the downloaded box did not match the expected
|
The checksum of the downloaded box did not match the expected
|
||||||
value. Please verify that you have the proper URL setup and that
|
value. Please verify that you have the proper URL setup and that
|
||||||
|
|
|
@ -209,6 +209,29 @@ describe Vagrant::Action::Builtin::BoxAdd, :skip_windows, :bsdtar do
|
||||||
to raise_error(Vagrant::Errors::BoxChecksumMismatch)
|
to raise_error(Vagrant::Errors::BoxChecksumMismatch)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "ignores checksums if empty string" do
|
||||||
|
box_path = iso_env.box2_file(:virtualbox)
|
||||||
|
with_web_server(box_path) do |port|
|
||||||
|
env[:box_name] = "foo"
|
||||||
|
env[:box_url] = "http://127.0.0.1:#{port}/#{box_path.basename}"
|
||||||
|
env[:box_checksum] = ""
|
||||||
|
env[:box_checksum_type] = ""
|
||||||
|
|
||||||
|
|
||||||
|
expect(box_collection).to receive(:add).with(any_args) { |path, name, version, **opts|
|
||||||
|
expect(checksum(path)).to eq(checksum(box_path))
|
||||||
|
expect(name).to eq("foo")
|
||||||
|
expect(version).to eq("0")
|
||||||
|
expect(opts[:metadata_url]).to be_nil
|
||||||
|
true
|
||||||
|
}.and_return(box)
|
||||||
|
|
||||||
|
expect(app).to receive(:call).with(env)
|
||||||
|
|
||||||
|
subject.call(env)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
it "does not raise an error if the checksum has different case" do
|
it "does not raise an error if the checksum has different case" do
|
||||||
box_path = iso_env.box2_file(:virtualbox)
|
box_path = iso_env.box2_file(:virtualbox)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue