class ChefSpec::Berkshelf
def initialize
def initialize @tmpdir = Dir.mktmpdir end
def setup!
Setup and install the necessary dependencies in the temporary directory.
def setup! # Get the list of Berkshelf options opts = RSpec.configuration.berkshelf_options unless opts.is_a?(Hash) raise InvalidBerkshelfOptions(value: opts.inspect) end berksfile = ::Berkshelf::Berksfile.from_options(opts) # Grab a handle to tmpdir, since Berkshelf 2 modifies it a bit tmpdir = File.join(@tmpdir, "cookbooks") ::Berkshelf.ui.mute do if ::Berkshelf::Berksfile.method_defined?(:vendor) # Berkshelf 3.0 requires the directory to not exist FileUtils.rm_rf(tmpdir) berksfile.vendor(tmpdir) else berksfile.install(path: tmpdir) end end filter = Coverage::BerkshelfFilter.new(berksfile) Coverage.add_filter(filter) ::RSpec.configure { |config| config.cookbook_path = tmpdir } end
def teardown!
Destroy the installed Berkshelf at the temporary directory.
def teardown! FileUtils.rm_rf(@tmpdir) if File.exist?(@tmpdir) end