Sha256: 30634dbc97985d2ba5965048ac8dae8c7c16a11beeff5a9a280fb36117ae48f4

Contents?: true

Size: 874 Bytes

Versions: 1

Compression:

Stored size: 874 Bytes

Contents

module Foodtaster
  module RSpec
    module ExampleMethods
      def get_vm(vm_name)
        Foodtaster::RSpecRun.current.get_vm(vm_name)
      end

      def run_chef_on(vm_name, &block)
        chef_config = ChefConfig.new.tap{ |conf| block.call(conf) }.to_hash
        vm = get_vm(vm_name)
        vm.run_chef(chef_config)
      end

      private

      class ChefConfig
        attr_accessor :json, :run_list

        def initialize
          @json = {}
          @run_list = []
        end

        def add_recipe(name)
          name = "recipe[#{name}]" unless name =~ /^recipe\[(.+?)\]$/
          run_list << name
        end

        def add_role(name)
          name = "role[#{name}]" unless name =~ /^role\[(.+?)\]$/
          run_list << name
        end

        def to_hash
          { json: json, run_list: run_list }
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
foodtaster-0.0.1 lib/foodtaster/rspec/example_methods.rb