require 'bundler/setup' # Style tests. Rubocop and Foodcritic namespace :style do require 'rubocop/rake_task' desc 'Run Ruby style checks' RuboCop::RakeTask.new(:ruby) require 'foodcritic' desc 'Run Chef style checks' FoodCritic::Rake::LintTask.new(:chef) do |t| t.options = { fail_tags: ['any'], tags: ['~FC005'] } end end desc 'Run all style checks' task style: ['style:chef', 'style:ruby'] # Rspec and ChefSpec require 'rspec/core/rake_task' desc 'Run ChefSpec examples' RSpec::Core::RakeTask.new(:spec) # Integration tests. Kitchen.ci require 'kitchen' namespace :integration do desc 'Run Test Kitchen with Vagrant' task :vagrant do Kitchen.logger = Kitchen.default_file_logger Kitchen::Config.new.instances.each do |instance| instance.test(:always) end end desc 'Run Test Kitchen with cloud plugins' task :cloud do run_kitchen = true if ENV['TRAVIS'] == 'true' && ENV['TRAVIS_PULL_REQUEST'] != 'false' run_kitchen = false end if run_kitchen Kitchen.logger = Kitchen.default_file_logger @loader = Kitchen::Loader::YAML.new(project_config: './.kitchen.cloud.yml') config = Kitchen::Config.new(loader: @loader) config.instances.each do |instance| instance.test(:always) end end end end namespace :travis do desc 'Run tests on Travis' task ci: %w(style spec) end # The default rake task should just run it all task default: %w(travis:ci integration) # The default rake task should just run it all task default: ['style', 'spec', 'integration:vagrant']