of `args` itself and as an element inside of an `args` array. Added validation around passing in arrays for arguments. Just knowing that it is an array is not enough, because arrays can contain any other type.
80 lines
2.0 KiB
Ruby
80 lines
2.0 KiB
Ruby
require File.expand_path("../../../../base", __FILE__)
|
|
|
|
describe "VagrantPlugins::Shell::Config" do
|
|
let(:described_class) do
|
|
VagrantPlugins::Shell::Plugin.components.configs[:provisioner][:shell]
|
|
end
|
|
|
|
let(:machine) { double('machine', env: Vagrant::Environment.new) }
|
|
let(:file_that_exists) { File.expand_path(__FILE__) }
|
|
|
|
subject { described_class.new }
|
|
|
|
describe "validate" do
|
|
it "passes with no args" do
|
|
subject.path = file_that_exists
|
|
subject.finalize!
|
|
|
|
result = subject.validate(machine)
|
|
|
|
result["shell provisioner"].should == []
|
|
end
|
|
|
|
it "passes with string args" do
|
|
subject.path = file_that_exists
|
|
subject.args = "a string"
|
|
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"]
|
|
subject.finalize!
|
|
|
|
result = subject.validate(machine)
|
|
|
|
result["shell provisioner"].should == []
|
|
end
|
|
|
|
it "returns an error if args is neither a string nor an array" do
|
|
neither_array_nor_string = Object.new
|
|
|
|
subject.path = file_that_exists
|
|
subject.args = neither_array_nor_string
|
|
subject.finalize!
|
|
|
|
result = subject.validate(machine)
|
|
|
|
result["shell provisioner"].should == [
|
|
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
|