Fix command builder tests

This commit is contained in:
Seth Vargo 2015-07-09 21:36:50 -06:00
parent 4b1847acf3
commit d72306b6d5
1 changed files with 49 additions and 36 deletions

View File

@ -8,97 +8,110 @@ describe VagrantPlugins::Chef::CommandBuilder do
let(:chef_config) { double("chef_config") }
before(:each) do
allow(chef_config).to receive(:provisioning_path).and_return('/tmp/vagrant-chef-1')
allow(chef_config).to receive(:provisioning_path).and_return("/tmp/vagrant-chef-1")
allow(chef_config).to receive(:arguments).and_return(nil)
allow(chef_config).to receive(:binary_env).and_return(nil)
allow(chef_config).to receive(:binary_path).and_return(nil)
allow(chef_config).to receive(:binary_env).and_return(nil)
allow(chef_config).to receive(:log_level).and_return(:info)
end
describe '.initialize' do
it 'should raise when chef type is not client or solo' do
describe ".initialize" do
it "raises an error when chef type is not client or solo" do
expect { VagrantPlugins::Chef::CommandBuilder.new(chef_config, :client_bad) }.
to raise_error
end
it "does not raise an error for :client" do
expect {
VagrantPlugins::Chef::CommandBuilder.new(:client, chef_config)
}.to_not raise_error
end
it "does not raise an error for :solo" do
expect {
VagrantPlugins::Chef::CommandBuilder.new(:solo, chef_config)
}.to_not raise_error
end
end
describe 'build_command' do
describe 'windows' do
describe "#command" do
describe "windows" do
subject do
VagrantPlugins::Chef::CommandBuilder.new(chef_config, :client, true)
VagrantPlugins::Chef::CommandBuilder.new(:client, chef_config, windows: true)
end
it "executes the chef-client in PATH by default" do
expect(subject.build_command()).to match(/^chef-client/)
expect(subject.command).to match(/^chef-client/)
end
it "executes the chef-client using full path if binary_path is specified" do
allow(chef_config).to receive(:binary_path).and_return(
"c:\\opscode\\chef\\bin\\chef-client")
expect(subject.build_command()).to match(/^c:\\opscode\\chef\\bin\\chef-client\\chef-client/)
expect(subject.command).to match(/^c:\\opscode\\chef\\bin\\chef-client\\chef-client/)
end
it "builds a guest friendly client.rb path" do
expect(subject.build_command()).to include(
'-c c:\\tmp\\vagrant-chef-1\\client.rb')
expect(subject.command).to include(
'--config c:\\tmp\\vagrant-chef-1\\client.rb')
end
it "builds a guest friendly solo.json path" do
expect(subject.build_command()).to include(
'-j c:\\tmp\\vagrant-chef-1\\dna.json')
expect(subject.command).to include(
'--json-attributes c:\\tmp\\vagrant-chef-1\\dna.json')
end
it 'includes Chef arguments if specified' do
allow(chef_config).to receive(:arguments).and_return("-l DEBUG")
expect(subject.build_command()).to include(
'-l DEBUG')
it "includes Chef arguments if specified" do
allow(chef_config).to receive(:arguments).and_return("bacon pants")
expect(subject.command).to include(
" bacon pants")
end
it 'includes --no-color if UI is not colored' do
expect(subject.build_command()).to include(
' --no-color')
it "includes --no-color if UI is not colored" do
expect(subject.command).to include(
" --no-color")
end
end
describe 'linux' do
describe "linux" do
subject do
VagrantPlugins::Chef::CommandBuilder.new(chef_config, :client, false)
VagrantPlugins::Chef::CommandBuilder.new(:client, chef_config, windows: false)
end
it "executes the chef-client in PATH by default" do
expect(subject.build_command()).to match(/^chef-client/)
expect(subject.command).to match(/^chef-client/)
end
it "executes the chef-client using full path if binary_path is specified" do
allow(chef_config).to receive(:binary_path).and_return(
"/opt/chef/chef-client")
expect(subject.build_command()).to match(/^\/opt\/chef\/chef-client/)
expect(subject.command).to match(/^\/opt\/chef\/chef-client/)
end
it "builds a guest friendly client.rb path" do
expect(subject.build_command()).to include(
'-c /tmp/vagrant-chef-1/client.rb')
expect(subject.command).to include(
"--config /tmp/vagrant-chef-1/client.rb")
end
it "builds a guest friendly solo.json path" do
expect(subject.build_command()).to include(
'-j /tmp/vagrant-chef-1/dna.json')
expect(subject.command).to include(
"--json-attributes /tmp/vagrant-chef-1/dna.json")
end
it 'includes Chef arguments if specified' do
allow(chef_config).to receive(:arguments).and_return("-l DEBUG")
expect(subject.build_command()).to include(
'-l DEBUG')
it "includes Chef arguments if specified" do
allow(chef_config).to receive(:arguments).and_return("bacon")
expect(subject.command).to include(
" bacon")
end
it 'includes --no-color if UI is not colored' do
expect(subject.build_command()).to include(
' --no-color')
it "includes --no-color if UI is not colored" do
expect(subject.command).to include(
" --no-color")
end
it 'includes environment variables if specified' do
it "includes environment variables if specified" do
allow(chef_config).to receive(:binary_env).and_return("ENVVAR=VAL")
expect(subject.build_command()).to match(/^ENVVAR=VAL /)
expect(subject.command).to match(/^ENVVAR=VAL /)
end
end
end