[chef] How to test a bash code snippet


Chronological Thread 
  • From: Rudi < >
  • To:
  • Subject: [chef] How to test a bash code snippet
  • Date: Mon, 8 Jul 2013 22:56:11 +0800

Hi,

I'm using chefspec with chef 11 and have this working piece of code but
don't know how to test it.

I hope this is the correct place to ask for any suggestions on this?

I also have a crude file exists check so that bundle doesn't run every chef_run.

bash "install with bundler" do
  user "vagrant"
  cwd "/vagrant"
  flags "--login"
  code <<-EOH
  rvm use ruby-1.9.2-p290
  bundle --verbose
  EOH
  # xpath is the last in the list of 125 required gems for this application (gem list --local)
  # If this gem is here we assume bundle has already run successfully.
  not_if { ::File.exists?('/home/vagrant/.rvm/gems/ruby-1.9.2-p290/gems/xpath-0.1.4') }
end


Prior to this code I was testing the execute command with this:

describe 'main::install_bundle' do
  let (:chef_run) { ChefSpec::ChefRunner.new.converge 'main::install_bundle' }

  it "installs with bundler" do
    expect(chef_run).to execute_command("cd /vagrant && rvm use ruby-1.9.2-p290 && bundle --verbose")
  end
end

But I need the "--login" flag so that rvm can select ruby 1.9.2 so I changed to the bash resource.

FYI ..chef is running with ruby 1.9.3 but the Rails app uses 1.9.2 on the /vagrant box (it's some old coder I need to maintain).

Thanks!




Archive powered by MHonArc 2.6.16.

§