diff --git a/.gitignore b/.gitignore index 2b4daef3..d7ee44ab 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ .bundle/ -.cookbooks/ +berks-cookbooks/ .kitchen .vagrant .coverage/ diff --git a/.rubocop.yml b/.rubocop.yml index 8ac2ed6f..e85d66c6 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,5 +1,5 @@ AllCops: - Includes: + Include: - metadata.rb - Gemfile - attributes/** @@ -8,6 +8,8 @@ AllCops: - recipes/** - resources/** - spec/** + Exclude: + - berks-cookbooks/** Encoding: Exclude: diff --git a/Gemfile b/Gemfile index f1bb3cc1..9e098bbb 100644 --- a/Gemfile +++ b/Gemfile @@ -9,3 +9,4 @@ gem 'rspec', '~> 3.0.0' gem 'foodcritic', '~> 3.0.3' gem 'strainer' gem 'rubocop', '~> 0.18.1' +gem 'rake', '~> 10.0' diff --git a/Rakefile b/Rakefile new file mode 100644 index 00000000..e9952dfa --- /dev/null +++ b/Rakefile @@ -0,0 +1,33 @@ +task default: ["test"] + +task :test => [:lint, :style, :unit] + +task :bundler_prep do + mkdir_p '.bundle' + sh %{bundle install --path=.bundle --jobs 1 --retry 3 --verbose} +end + +task :berks_prep => :bundler_prep do + sh %{bundle exec berks vendor} +end + +task :lint => :bundler_prep do + sh %{bundle exec foodcritic --epic-fail any --tags ~FC003 --tags ~FC023 .} +end + +task :style => :bundler_prep do + sh %{bundle exec rubocop} +end + +task :unit => :berks_prep do + sh %{bundle exec rspec --format documentation} +end + +task :clean do + rm_rf [ + '.bundle', + 'berks-cookbooks', + 'Gemfile.lock', + 'Berksfile.lock' + ] +end diff --git a/TESTING.md b/TESTING.md index c12d4f20..f95fce9b 100644 --- a/TESTING.md +++ b/TESTING.md @@ -1,18 +1,18 @@ # Testing the Cookbook # -This cookbook uses [bundler](http://gembundler.com/) and [berkshelf](http://berkshelf.com/) to isolate dependencies. +This cookbook uses [bundler](http://gembundler.com/) and [berkshelf](http://berkshelf.com/) to isolate dependencies. Make sure you have `ruby 1.9.x`, `bundler`, `rake`, build essentials and the header files for `gecode` installed before continuing. Make sure that you're using gecode version 3. More info [here](https://github.com/opscode/dep-selector-libgecode/tree/0bad63fea305ede624c58506423ced697dd2545e#using-a-system-gecode-instead). -To setup the dependencies: +We have three test suites which you can run either, individually (there are three rake tasks): - $ bundle install --path=.bundle # install gem dependencies - $ bundle exec berks vendor .cookbooks # install cookbook dependencies and create the folder .cookbooks + $ rake lint + $ rake style + $ rake unit -To run the tests: +or altogether: - $ export COOKBOOK='openstack-common' - $ bundle exec foodcritic -f any -t ~FC003 -t ~FC023 .cookbooks/$COOKBOOK - $ bundle exec rubocop .cookbooks/$COOKBOOK - $ bundle exec rspec --format documentation .cookbooks/$COOKBOOK/spec + $ rake test + +The `rake` tasks will take care of installing the needed gem dependencies and cookbooks with `berkshelf`. ## Rubocop ##