Class: Busser::RunnerPlugin::Rspec

Inherits:
Base
  • Object
show all
Defined in:
lib/busser/runner_plugin/rspec.rb

Overview

A Busser runner plugin for Rspec.

Author:

Instance Method Summary collapse

Instance Method Details

#testObject



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/busser/runner_plugin/rspec.rb', line 32

def test
  rspec_path = suite_path('rspec').to_s

  setup_file = File.join(rspec_path, "setup-recipe.rb")

  Dir.chdir(rspec_path) do

    if File.exists?(File.join(rspec_path, "Gemfile"))
      # Bundle install local completes quickly if the gems are already found locally
      # it fails if it needs to talk to the internet. The || below is the fallback
      # to the internet-enabled version. It's a speed optimization.
      run("#{Gem.bindir}/bundle install --local || #{Gem.bindir}/bundle install")
    end

    if File.exists?(setup_file)
      if !File.exists?("/opt/chef/bin/chef-apply")
        raise "You have a chef setup file at #{setup_file}, but /opt/chef/bin/chef-apply does not if exist"
      end
      run("/opt/chef/bin/chef-apply #{setup_file}")
    end

    runner = File.expand_path(File.join(File.dirname(__FILE__), "..", "rspec", "runner.rb"))
    run_ruby_script!("#{runner} -I #{rspec_path} -I #{rspec_path}/lib #{rspec_path}")
  end
end