Skip to content

Instantly share code, notes, and snippets.

@jamtur01
Created April 21, 2013 19:33

Revisions

  1. jamtur01 created this gist Apr 21, 2013.
    53 changes: 53 additions & 0 deletions dsl.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,53 @@
    require 'hashr'
    require 'test-kitchen/project'
    require 'test-kitchen/platform'
    require 'test-kitchen/runner/openstack/dsl'

    module TestKitchen
    module DSL

    module BasicDSL
    def integration_test(name, &block)
    env.project = Project::Ruby.new(name.to_s, &block)
    end

    def platform(name, &block)
    env.platforms[name.to_s] = Platform.new(name, &block)
    end

    def default_runner(name)
    env.default_runner = name
    end
    end
    module CookbookDSL
    def cookbook(name, &block)
    env.project = Project::Cookbook.new(name.to_s, &block)
    end
    end
    module ModuleDSL
    def module(name, &block)
    puts name, &block
    env.project = Project::Module.new(name.to_s, &block)
    end
    end

    class File
    include BasicDSL
    include CookbookDSL
    include ModuleDSL

    attr_reader :env

    def load(path, env)
    @env = env
    begin
    self.instance_eval(::File.read(path))
    rescue SyntaxError
    env.ui.info('Your Kitchenfile could not be loaded. Please check it for errors.', :red)
    raise
    end
    end
    end

    end
    end