Filling out initial rubocop support.
https://blueprints.launchpad.net/openstack-chef/+spec/lint-and-unit-testing-for-havana Removing tailor, cleaning up metadata and Gemfile and adding TESTING.md Change-Id: I193388f59f3265a6a549452fd798ee512f197603
This commit is contained in:
		
							
								
								
									
										7
									
								
								.rubocop.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								.rubocop.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
# UTF-8 headers not generally in these files
 | 
			
		||||
Encoding:
 | 
			
		||||
  Enabled: false
 | 
			
		||||
 | 
			
		||||
# ignore long lines
 | 
			
		||||
LineLength:
 | 
			
		||||
  Enabled: false
 | 
			
		||||
							
								
								
									
										25
									
								
								.tailor
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								.tailor
									
									
									
									
									
								
							@@ -1,25 +0,0 @@
 | 
			
		||||
Tailor.config do |config|
 | 
			
		||||
  config.formatters "text"
 | 
			
		||||
  config.file_set '**/*.rb' do |style|
 | 
			
		||||
    style.max_line_length 80, level: :off
 | 
			
		||||
    style.allow_camel_case_methods false, level: :error
 | 
			
		||||
    style.allow_hard_tabs false, level: :error
 | 
			
		||||
    style.allow_screaming_snake_case_classes false, level: :error
 | 
			
		||||
    style.allow_trailing_line_spaces false, level: :error
 | 
			
		||||
    style.allow_invalid_ruby false, level: :warn
 | 
			
		||||
    style.indentation_spaces 2, level: :error
 | 
			
		||||
    style.max_code_lines_in_class 300, level: :error
 | 
			
		||||
    style.max_code_lines_in_method 30, level: :error
 | 
			
		||||
    style.spaces_after_comma 1, level: :error
 | 
			
		||||
    style.spaces_after_lbrace 1, level: :error
 | 
			
		||||
    style.spaces_after_lbracket 0, level: :error
 | 
			
		||||
    style.spaces_after_lparen 0, level: :error
 | 
			
		||||
    style.spaces_before_comma 0, level: :error
 | 
			
		||||
    style.spaces_before_lbrace 1, level: :error
 | 
			
		||||
    style.spaces_before_rbrace 1, level: :error
 | 
			
		||||
    style.spaces_before_rbracket 0, level: :error
 | 
			
		||||
    style.spaces_before_rparen 0, level: :error
 | 
			
		||||
    style.spaces_in_empty_braces 0, level: :error
 | 
			
		||||
    style.trailing_newlines 1, level: :error
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										16
									
								
								Gemfile
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								Gemfile
									
									
									
									
									
								
							@@ -1,9 +1,9 @@
 | 
			
		||||
source "https://rubygems.org"
 | 
			
		||||
source 'https://rubygems.org'
 | 
			
		||||
 | 
			
		||||
gem "chef", "~> 11.4.4"
 | 
			
		||||
gem "json", "<= 1.7.7" # chef 11 dependency
 | 
			
		||||
gem "berkshelf", "~> 2.0.10"
 | 
			
		||||
gem "chefspec", "~> 3.0.2"
 | 
			
		||||
gem "foodcritic", "~> 3.0.3"
 | 
			
		||||
gem "strainer"
 | 
			
		||||
gem "rubocop"
 | 
			
		||||
gem 'chef', '~> 11.4.4'
 | 
			
		||||
gem 'json', '<= 1.7.7' # chef 11 dependency
 | 
			
		||||
gem 'berkshelf', '~> 2.0.10'
 | 
			
		||||
gem 'chefspec', '~> 3.0.2'
 | 
			
		||||
gem 'foodcritic', '~> 3.0.3'
 | 
			
		||||
gem 'strainer'
 | 
			
		||||
gem 'rubocop', '>= 0.16.0'
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										26
									
								
								Gemfile.lock
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								Gemfile.lock
									
									
									
									
									
								
							@@ -9,7 +9,7 @@ GEM
 | 
			
		||||
      gyoku (>= 0.4.0)
 | 
			
		||||
      nokogiri (>= 1.4.0)
 | 
			
		||||
    ast (1.1.0)
 | 
			
		||||
    berkshelf (2.0.10)
 | 
			
		||||
    berkshelf (2.0.11)
 | 
			
		||||
      activesupport (~> 3.2.0)
 | 
			
		||||
      addressable (~> 2.3.4)
 | 
			
		||||
      buff-shell_out (~> 0.1)
 | 
			
		||||
@@ -63,7 +63,7 @@ GEM
 | 
			
		||||
    erubis (2.7.0)
 | 
			
		||||
    faraday (0.8.8)
 | 
			
		||||
      multipart-post (~> 1.2.0)
 | 
			
		||||
    fauxhai (2.0.0)
 | 
			
		||||
    fauxhai (2.0.1)
 | 
			
		||||
      net-ssh
 | 
			
		||||
      ohai
 | 
			
		||||
    ffi (1.9.3)
 | 
			
		||||
@@ -78,10 +78,11 @@ GEM
 | 
			
		||||
      multi_json (~> 1.3)
 | 
			
		||||
    gssapi (1.0.3)
 | 
			
		||||
      ffi (>= 1.0.1)
 | 
			
		||||
    gyoku (1.1.0)
 | 
			
		||||
    gyoku (1.1.1)
 | 
			
		||||
      builder (>= 2.1.2)
 | 
			
		||||
    hashie (2.0.5)
 | 
			
		||||
    highline (1.6.20)
 | 
			
		||||
    hitimes (1.2.1)
 | 
			
		||||
    httpclient (2.3.4.1)
 | 
			
		||||
    httpi (0.9.7)
 | 
			
		||||
      rack
 | 
			
		||||
@@ -110,7 +111,7 @@ GEM
 | 
			
		||||
      net-ssh (>= 2.1.4)
 | 
			
		||||
      net-ssh-gateway (>= 0.99.0)
 | 
			
		||||
    nio4r (0.5.0)
 | 
			
		||||
    nokogiri (1.5.10)
 | 
			
		||||
    nokogiri (1.5.11)
 | 
			
		||||
    nori (1.1.5)
 | 
			
		||||
    ohai (6.20.0)
 | 
			
		||||
      ipaddress
 | 
			
		||||
@@ -120,18 +121,18 @@ GEM
 | 
			
		||||
      mixlib-shellout
 | 
			
		||||
      systemu (~> 2.5.2)
 | 
			
		||||
      yajl-ruby
 | 
			
		||||
    parser (2.0.0)
 | 
			
		||||
    parser (2.1.2)
 | 
			
		||||
      ast (~> 1.1)
 | 
			
		||||
      slop (~> 3.4, >= 3.4.5)
 | 
			
		||||
    polyglot (0.3.3)
 | 
			
		||||
    powerpack (0.0.9)
 | 
			
		||||
    rack (1.5.2)
 | 
			
		||||
    rainbow (1.1.4)
 | 
			
		||||
    rake (10.1.0)
 | 
			
		||||
    rainbow (1.99.1)
 | 
			
		||||
    rake (10.1.1)
 | 
			
		||||
    rbzip2 (0.2.0)
 | 
			
		||||
    rest-client (1.6.7)
 | 
			
		||||
      mime-types (>= 1.16)
 | 
			
		||||
    retryable (1.3.3)
 | 
			
		||||
    retryable (1.3.4)
 | 
			
		||||
    ridley (1.5.3)
 | 
			
		||||
      addressable
 | 
			
		||||
      buff-config (~> 0.2)
 | 
			
		||||
@@ -160,8 +161,8 @@ GEM
 | 
			
		||||
    rspec-expectations (2.14.4)
 | 
			
		||||
      diff-lcs (>= 1.1.3, < 2.0)
 | 
			
		||||
    rspec-mocks (2.14.4)
 | 
			
		||||
    rubocop (0.15.0)
 | 
			
		||||
      parser (~> 2.0)
 | 
			
		||||
    rubocop (0.16.0)
 | 
			
		||||
      parser (~> 2.1)
 | 
			
		||||
      powerpack (~> 0.0.6)
 | 
			
		||||
      rainbow (>= 1.1.4)
 | 
			
		||||
    rubyntlm (0.1.1)
 | 
			
		||||
@@ -180,7 +181,8 @@ GEM
 | 
			
		||||
      buff-platform (~> 0.1)
 | 
			
		||||
    systemu (2.5.2)
 | 
			
		||||
    thor (0.18.1)
 | 
			
		||||
    timers (1.1.0)
 | 
			
		||||
    timers (2.0.0)
 | 
			
		||||
      hitimes
 | 
			
		||||
    treetop (1.4.15)
 | 
			
		||||
      polyglot
 | 
			
		||||
      polyglot (>= 0.3.1)
 | 
			
		||||
@@ -209,5 +211,5 @@ DEPENDENCIES
 | 
			
		||||
  chefspec (~> 3.0.2)
 | 
			
		||||
  foodcritic (~> 3.0.3)
 | 
			
		||||
  json (<= 1.7.7)
 | 
			
		||||
  rubocop
 | 
			
		||||
  rubocop (>= 0.16.0)
 | 
			
		||||
  strainer
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								README.md
									
									
									
									
									
								
							@@ -180,15 +180,7 @@ in your recipe.
 | 
			
		||||
Testing
 | 
			
		||||
=====
 | 
			
		||||
 | 
			
		||||
This cookbook uses [bundler](http://gembundler.com/), [berkshelf](http://berkshelf.com/), and [strainer](https://github.com/customink/strainer) to isolate dependencies and run tests.
 | 
			
		||||
 | 
			
		||||
Tests are defined in Strainerfile.
 | 
			
		||||
 | 
			
		||||
To run tests:
 | 
			
		||||
 | 
			
		||||
    $ bundle install # install gem dependencies
 | 
			
		||||
    $ bundle exec berks install # install cookbook dependencies
 | 
			
		||||
    $ bundle exec strainer test # run tests
 | 
			
		||||
Please refer to the [TESTING.md](TESTING.md) for instructions for testing the cookbook.
 | 
			
		||||
 | 
			
		||||
License and Author
 | 
			
		||||
==================
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,6 @@
 | 
			
		||||
# Strainerfile
 | 
			
		||||
rubocop: bundle exec rubocop $SANDBOX/$COOKBOOK
 | 
			
		||||
rubocop: bundle exec rubocop $SANDBOX/$COOKBOOK/Gemfile $SANDBOX/$COOKBOOK/metadata.rb --config $SANDBOX/$COOKBOOK/.rubocop.yml
 | 
			
		||||
# rubocop: bundle exec rubocop $SANDBOX/$COOKBOOK
 | 
			
		||||
knife test: bundle exec knife cookbook test $COOKBOOK
 | 
			
		||||
foodcritic: bundle exec foodcritic -f any -t ~FC003 -t ~FC023 $SANDBOX/$COOKBOOK
 | 
			
		||||
chefspec: bundle exec rspec $SANDBOX/$COOKBOOK/spec
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										42
									
								
								TESTING.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								TESTING.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,42 @@
 | 
			
		||||
# Testing the Cookbook #
 | 
			
		||||
 | 
			
		||||
This cookbook uses [bundler](http://gembundler.com/), [berkshelf](http://berkshelf.com/), and [strainer](https://github.com/customink/strainer) to isolate dependencies and run tests.
 | 
			
		||||
 | 
			
		||||
Tests are defined in [Strainerfile](Strainerfile), which in turn calls rubocop, knife, foodcritic and chefspec.
 | 
			
		||||
 | 
			
		||||
To run all of the tests with Strainer:
 | 
			
		||||
 | 
			
		||||
    $ bundle exec strainer test -s Strainerfile
 | 
			
		||||
 | 
			
		||||
Or you may run the tests individually:
 | 
			
		||||
 | 
			
		||||
    $ bundle install --path=.bundle # install gem dependencies
 | 
			
		||||
    $ bundle exec berks install --path=.cookbooks # install cookbook dependencies
 | 
			
		||||
    $ bundle exec strainer test -s Strainerfile # run tests
 | 
			
		||||
 | 
			
		||||
## Rubocop  ##
 | 
			
		||||
 | 
			
		||||
[Rubocop](https://github.com/bbatsov/rubocop) is a static Ruby code analyzer, based on the community [Ruby style guide](https://github.com/bbatsov/ruby-style-guide). We are attempting to adhere to this where applicable, slowly cleaning up the cookbooks until we can turn on Rubocop for gating the commits.
 | 
			
		||||
 | 
			
		||||
### Attribute Rules ###
 | 
			
		||||
 | 
			
		||||
Since there are slight style differences between the coding of attributes, recipes and metadata files there are specific `.rubocop.yml` files for each of:
 | 
			
		||||
 | 
			
		||||
   [Gemfile and metadata.rb](.rubocop.yml)
 | 
			
		||||
   [attributes/*.rb](attributes/.rubocop.yml)
 | 
			
		||||
   [recipes/.rubocop.yml](recipes/.rubocop.yml)
 | 
			
		||||
   [spec/.rubocop.yml](spec/.rubocop.yml)
 | 
			
		||||
 | 
			
		||||
## Knife ##
 | 
			
		||||
 | 
			
		||||
[knife cookbook test](http://docs.opscode.com/chef/knife.html#test) is used to check the cookbook's Ruby and ERB files for basic syntax errors.
 | 
			
		||||
 | 
			
		||||
## Foodcritic ##
 | 
			
		||||
 | 
			
		||||
[Foodcritic](http://acrmp.github.io/foodcritic/) is a lint tool for Chef cookbooks. We ignore the following rules:
 | 
			
		||||
 | 
			
		||||
[FC003](http://acrmp.github.io/foodcritic/#FC003) these cookbooks are not intended for Chef Solo.
 | 
			
		||||
 | 
			
		||||
## Chefspec
 | 
			
		||||
 | 
			
		||||
[ChefSpec](http://code.sethvargo.com/chefspec/) is a unit testing framework for testing Chef cookbooks. ChefSpec makes it easy to write examples and get fast feedback on cookbook changes without the need for virtual machines or cloud servers.
 | 
			
		||||
							
								
								
									
										24
									
								
								metadata.rb
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								metadata.rb
									
									
									
									
									
								
							@@ -1,19 +1,19 @@
 | 
			
		||||
name             "openstack-common"
 | 
			
		||||
maintainer       "AT&T Services, Inc."
 | 
			
		||||
maintainer_email "cookbooks@lists.tfoundry.com"
 | 
			
		||||
license          "Apache 2.0"
 | 
			
		||||
description      "Common OpenStack attributes, libraries and recipes."
 | 
			
		||||
name             'openstack-common'
 | 
			
		||||
maintainer       'AT&T Services, Inc.'
 | 
			
		||||
maintainer_email 'cookbooks@lists.tfoundry.com'
 | 
			
		||||
license          'Apache 2.0'
 | 
			
		||||
description      'Common OpenStack attributes, libraries and recipes.'
 | 
			
		||||
long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
 | 
			
		||||
version          "8.0.1"
 | 
			
		||||
version          '8.0.1'
 | 
			
		||||
 | 
			
		||||
recipe           "openstack-common", "Installs/Configures common recipes"
 | 
			
		||||
recipe           "openstack-common::set_endpoints_by_interface", "Set endpoints by interface"
 | 
			
		||||
recipe           "openstack-common::logging", "Installs/Configures common logging"
 | 
			
		||||
recipe           "openstack-common::sysctl", "Configures sysctl settings"
 | 
			
		||||
recipe           'openstack-common', 'Installs/Configures common recipes'
 | 
			
		||||
recipe           'openstack-common::set_endpoints_by_interface', 'Set endpoints by interface'
 | 
			
		||||
recipe           'openstack-common::logging', 'Installs/Configures common logging'
 | 
			
		||||
recipe           'openstack-common::sysctl', 'Configures sysctl settings'
 | 
			
		||||
 | 
			
		||||
%w{ ubuntu suse }.each do |os|
 | 
			
		||||
  supports os
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
depends          "apt"
 | 
			
		||||
depends          "database"
 | 
			
		||||
depends          'apt'
 | 
			
		||||
depends          'database'
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user