Merge pull request #2982 from ryanuber/shell_fixnum_args
provisioner/shell: shell provisioner fixnum args
This commit is contained in:
commit
3041ce1a7a
|
@ -66,7 +66,13 @@ module VagrantPlugins
|
|||
# string or as an array.
|
||||
def args_valid?
|
||||
return true if !args
|
||||
args.is_a?(String) || args.is_a?(Array)
|
||||
return true if args.is_a?(String) or args.is_a?(Fixnum)
|
||||
if args.is_a?(Array)
|
||||
args.each do |a|
|
||||
return false if not a.kind_of?(String) and not a.kind_of?(Fixnum)
|
||||
end
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
def remote?
|
||||
|
|
|
@ -8,10 +8,10 @@ module VagrantPlugins
|
|||
class Provisioner < Vagrant.plugin("2", :provisioner)
|
||||
def provision
|
||||
args = ""
|
||||
if config.args.is_a?(String)
|
||||
args = " #{config.args}"
|
||||
if config.args.is_a?(String) or config.args.is_a?(Fixnum)
|
||||
args = " #{config.args.to_s}"
|
||||
elsif config.args.is_a?(Array)
|
||||
args = config.args.map { |a| quote_and_escape(a) }
|
||||
args = config.args.map { |a| quote_and_escape(a.to_s) }
|
||||
args = " #{args.join(" ")}"
|
||||
end
|
||||
|
||||
|
|
|
@ -30,6 +30,16 @@ describe "VagrantPlugins::Shell::Config" do
|
|||
result["shell provisioner"].should == []
|
||||
end
|
||||
|
||||
it "passes with fixnum args" do
|
||||
subject.path = file_that_exists
|
||||
subject.args = 1
|
||||
subject.finalize!
|
||||
|
||||
result = subject.validate(machine)
|
||||
|
||||
result["shell provisioner"].should == []
|
||||
end
|
||||
|
||||
it "passes with array args" do
|
||||
subject.path = file_that_exists
|
||||
subject.args = ["an", "array"]
|
||||
|
@ -53,5 +63,27 @@ describe "VagrantPlugins::Shell::Config" do
|
|||
I18n.t("vagrant.provisioners.shell.args_bad_type")
|
||||
]
|
||||
end
|
||||
|
||||
it "handles scalar array args" do
|
||||
subject.path = file_that_exists
|
||||
subject.args = ["string", 1, 2]
|
||||
subject.finalize!
|
||||
|
||||
result = subject.validate(machine)
|
||||
|
||||
result["shell provisioner"].should == []
|
||||
end
|
||||
|
||||
it "returns an error if args is an array with non-scalar types" do
|
||||
subject.path = file_that_exists
|
||||
subject.args = [[1]]
|
||||
subject.finalize!
|
||||
|
||||
result = subject.validate(machine)
|
||||
|
||||
result["shell provisioner"].should == [
|
||||
I18n.t("vagrant.provisioners.shell.args_bad_type")
|
||||
]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue