Merge pull request #2982 from ryanuber/shell_fixnum_args

provisioner/shell: shell provisioner fixnum args
This commit is contained in:
Mitchell Hashimoto 2014-02-14 12:40:30 -08:00
commit 3041ce1a7a
3 changed files with 42 additions and 4 deletions

View File

@ -66,7 +66,13 @@ module VagrantPlugins
# string or as an array. # string or as an array.
def args_valid? def args_valid?
return true if !args 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 end
def remote? def remote?

View File

@ -8,10 +8,10 @@ module VagrantPlugins
class Provisioner < Vagrant.plugin("2", :provisioner) class Provisioner < Vagrant.plugin("2", :provisioner)
def provision def provision
args = "" args = ""
if config.args.is_a?(String) if config.args.is_a?(String) or config.args.is_a?(Fixnum)
args = " #{config.args}" args = " #{config.args.to_s}"
elsif config.args.is_a?(Array) 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(" ")}" args = " #{args.join(" ")}"
end end

View File

@ -30,6 +30,16 @@ describe "VagrantPlugins::Shell::Config" do
result["shell provisioner"].should == [] result["shell provisioner"].should == []
end 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 it "passes with array args" do
subject.path = file_that_exists subject.path = file_that_exists
subject.args = ["an", "array"] subject.args = ["an", "array"]
@ -53,5 +63,27 @@ describe "VagrantPlugins::Shell::Config" do
I18n.t("vagrant.provisioners.shell.args_bad_type") I18n.t("vagrant.provisioners.shell.args_bad_type")
] ]
end 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
end end