class Kitchen::RakeTasks

Kitchen Rake task generator.

@author Fletcher Nichol <fnichol@nichol.ca>

Attributes

config[R]

@return [Config] a Kitchen::Config

Public Class Methods

new(cfg = {}) { |self| ... } click to toggle source

Creates Kitchen Rake tasks and allows the callee to configure it.

@yield [self] gives itself to the block

# File lib/kitchen/rake_tasks.rb, line 30
def initialize(cfg = {})
  @loader = Kitchen::Loader::YAML.new(
    project_config: ENV["KITCHEN_YAML"],
    local_config: ENV["KITCHEN_LOCAL_YAML"],
    global_config: ENV["KITCHEN_GLOBAL_YAML"]
  )
  @config = Kitchen::Config.new(
    { loader: @loader }.merge(cfg)
  )
  Kitchen.logger = Kitchen.default_file_logger(nil, false)
  yield self if block_given?
  define
end

Private Instance Methods

define() click to toggle source

Generates a test Rake task for each instance and one to test all instances in serial.

@api private

# File lib/kitchen/rake_tasks.rb, line 53
def define
  namespace "kitchen" do
    kitchen_commands = %w{create converge setup verify destroy}
    config.instances.each do |instance|
      desc "Run #{instance.name} test instance"
      task instance.name do
        instance.test(:always)
      end

      kitchen_commands.each do |cmd|
        namespace cmd do
          task instance.name do
            instance.send(cmd)
          end
          desc "Run all #{cmd} instances"
          task "all" => config.instances.map(&:name)
        end
      end
    end

    desc "Run all test instances"
    task "all" => config.instances.map(&:name)

    kitchen_commands.each { |cmd| task cmd => "#{cmd}:all" }
  end
end