From 81b279a64d237ae615bb87f61a9db9c4e4d5e841 Mon Sep 17 00:00:00 2001 From: "Julian C. Dunn" Date: Fri, 11 Jul 2014 22:31:07 -0400 Subject: [PATCH] Added (possibly-broken) test harness --- .travis.yml | 6 ++++++ Gemfile | 36 ++++++++++++++++++++++++++++++++ Rakefile | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 101 insertions(+) create mode 100644 .travis.yml create mode 100644 Gemfile create mode 100644 Rakefile diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..c6729b9 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,6 @@ +language: ruby +bundler_args: --without kitchen_vagrant +rvm: +- 2.1.1 +script: +- bundle exec rake style diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..b30db4f --- /dev/null +++ b/Gemfile @@ -0,0 +1,36 @@ +source 'https://rubygems.org' + +group :lint do + gem 'foodcritic', '~> 3.0' + gem 'rubocop', '~> 0.24' +end + +group :unit do + gem 'berkshelf', '~> 3.0' + gem 'chefspec', '~> 3.1' +end + +group :kitchen_common do + gem 'test-kitchen', '~> 1.2' +end + +group :kitchen_vagrant do + gem 'kitchen-vagrant' +end + +group :kitchen_cloud do + gem 'kitchen-digitalocean' + gem 'kitchen-ec2' +end + +group :development do + gem 'ruby_gntp' + gem 'growl' + gem 'rb-fsevent' + gem 'guard', '~> 2.4' + gem 'guard-kitchen' + gem 'guard-foodcritic' + gem 'guard-rspec' + gem 'guard-rubocop' + gem 'rake' +end diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000..b174d4e --- /dev/null +++ b/Rakefile @@ -0,0 +1,59 @@ +require 'rspec/core/rake_task' +require 'rubocop/rake_task' +require 'foodcritic' +require 'kitchen' + +# Style tests. Rubocop and Foodcritic +namespace :style do + desc 'Run Ruby style checks' + Rubocop::RakeTask.new(:ruby) + + 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 +desc 'Run ChefSpec examples' +RSpec::Core::RakeTask.new(:spec) + +# Integration tests. Kitchen.ci +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 + +desc 'Run all tests on Travis' +task :travis => ['style', 'spec', 'integration:cloud'] + +# Default +task :default => ['style', 'spec', 'integration:vagrant']