From 8473912c31aa08e0453789ed31cbd63aa344de15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Igor=20Gali=C4=87?= Date: Fri, 8 Jan 2016 12:38:04 +0100 Subject: Update from voxpupuli modulesync_config --- .gitignore | 2 + .rubocop.yml | 64 ++++++ .travis.yml | 31 +-- CONTRIBUTING.md | 218 +++++---------------- Gemfile | 69 ++++++- Rakefile | 50 +++-- spec/acceptance/nodesets/centos-59-x64.yml | 10 + spec/acceptance/nodesets/centos-64-x64-pe.yml | 12 ++ spec/acceptance/nodesets/centos-65-x64.yml | 10 + .../nodesets/ubuntu-server-12042-x64.yml | 10 + .../acceptance/nodesets/ubuntu-server-1404-x64.yml | 11 ++ 11 files changed, 275 insertions(+), 212 deletions(-) create mode 100644 .rubocop.yml create mode 100644 spec/acceptance/nodesets/centos-59-x64.yml create mode 100644 spec/acceptance/nodesets/centos-64-x64-pe.yml create mode 100644 spec/acceptance/nodesets/centos-65-x64.yml create mode 100644 spec/acceptance/nodesets/ubuntu-server-12042-x64.yml create mode 100644 spec/acceptance/nodesets/ubuntu-server-1404-x64.yml diff --git a/.gitignore b/.gitignore index b5db85e..8894657 100644 --- a/.gitignore +++ b/.gitignore @@ -5,5 +5,7 @@ spec/fixtures/ .vagrant/ .bundle/ coverage/ +log/ .idea/ *.iml +.*.sw diff --git a/.rubocop.yml b/.rubocop.yml new file mode 100644 index 0000000..7c24c48 --- /dev/null +++ b/.rubocop.yml @@ -0,0 +1,64 @@ +AllCops: + Include: + - ./**/*.rb + Exclude: + - vendor/**/* + - pkg/**/* + - spec/fixtures/**/* + +# Configuration parameters: AllowURI, URISchemes. +Metrics/LineLength: + Max: 328 + +# 'Complexity' is very relative +Metrics/PerceivedComplexity: + Enabled: false + +# 'Complexity' is very relative +Metrics/CyclomaticComplexity: + Enabled: false + +# 'Complexity' is very relative +Metrics/AbcSize: + Enabled: false + +# Method length is not necessarily an indicator of code quality +Metrics/MethodLength: + Enabled: false + +# Class length is not necessarily an indicator of code quality +Metrics/ClassLength: + Enabled: false + +# dealbreaker: +Style/TrailingComma: + Enabled: false +Style/ClosingParenthesisIndentation: + Enabled: false + +# we still support ruby 1.8 +Style/HashSyntax: + Enabled: false + +Lint/AmbiguousRegexpLiteral: + Enabled: true +Style/RegexpLiteral: + Enabled: true +Style/WordArray: + Enabled: true + +# this catches the cases of using `module` for parser functions, types, or +# providers +Style/ClassAndModuleChildren: + Enabled: false + +Style/Documentation: + Description: 'Document classes and non-namespace modules.' + Enabled: false + +# More comfortable block layouts +Style/BlockDelimiters: + Enabled: False + +Style/MultilineBlockLayout: + Enabled: False diff --git a/.travis.yml b/.travis.yml index 12a6d7a..115d3c4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,21 +1,26 @@ --- -language: ruby sudo: false - -script: "bundle exec rake test SPEC_OPTS='--format documentation'" - +language: ruby +cache: bundler +bundler_args: --without system_tests +before_install: rm Gemfile.lock || true +script: + - 'bundle exec rake $CHECK' matrix: fast_finish: true include: - - rvm: 2.1 - env: PUPPET_VERSION="~> 3.0" STRICT_VARIABLES="yes" ORDERING="random" - - rvm: 2.1 - env: PUPPET_VERSION="~> 3.0" STRICT_VARIABLES="yes" ORDERING="random" FUTURE_PARSER="yes" - - rvm: 2.1 - env: PUPPET_VERSION="~> 4.0" ORDERING="random" + - rvm: 1.9.3 + env: PUPPET_VERSION="~> 3.0" STRICT_VARIABLES="yes" CHECK=test + - rvm: 2.1.7 + env: PUPPET_VERSION="~> 3.0" STRICT_VARIABLES="yes" CHECK=test + - rvm: 2.1.7 + env: PUPPET_VERSION="~> 4.0" STRICT_VARIABLES="yes" CHECK=test + - rvm: 2.2.3 + env: PUPPET_VERSION="~> 4.0" STRICT_VARIABLES="yes" CHECK=test + - rvm: 2.2.3 + env: PUPPET_VERSION="~> 4.0" STRICT_VARIABLES="yes" CHECK=rubocop notifications: email: false - deploy: provider: puppetforge user: puppet @@ -23,5 +28,7 @@ deploy: secure: "PzzvPB326Yx0hheLbusZGYCGW4i1jOOMjwJMC/7QpbN4+gvMdmHpmQP3XeQ5tm+YYXqLPMyr1he1viTln8GPqLk1qpzF55H5mTakPxMjWZfRYvM+Q7lmtOEsBEXXSJk0ZYwMHXGVd8ouDrhaRzS2JqnhCAhLat0HeLcERWZx6Ok=" on: tags: true + # all_branches is required to use tags all_branches: true - rvm: 2.1 + # Only publish if our main Ruby target builds + rvm: 1.9.3 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e164306..1ccfba6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,195 +1,85 @@ -Checklist (and a short version for the impatient) -================================================= +This module has grown over time based on a range of contributions from +people using it. If you follow these contributing guidelines your patch +will likely make it into a release a little quicker. - * Commits: - - Make commits of logical units. +## Contributing - - Check for unnecessary whitespace with "git diff --check" before - committing. +Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms. [Contributor Code of Conduct](https://voxpupuli.org/coc/). - - Commit using Unix line endings (check the settings around "crlf" in - git-config(1)). +1. Fork the repo. - - Do not check in commented out code or unneeded files. +1. Create a separate branch for your change. - - The first line of the commit message should be a short - description (50 characters is the soft limit, excluding ticket - number(s)), and should skip the full stop. +1. Run the tests. We only take pull requests with passing tests, and + documentation. - - Associate the issue in the message. If any issue exists in the body of - the commit a line like "Closes: #XXX" or "Mentions: #XXX" is expected. +1. Add a test for your change. Only refactoring and documentation + changes require no new tests. If you are adding functionality + or fixing a bug, please add a test. - - The body should provide a meaningful commit message, which: +1. Squash your commits down into logical components. Make sure to rebase + against the current master. - - uses the imperative, present tense: "change", not "changed" or - "changes". +1. Push the branch to your fork and submit a pull request. - - includes motivation for the change, and contrasts its - implementation with the previous behavior. +Please be prepared to repeat some of these steps as our contributors review +your code. - - Make sure that you have tests for the bug you are fixing, or - feature you are adding. +## Dependencies - - Make sure the test suites passes after your commit: - `bundle exec rake spec` More information on [testing](#Testing) below +The testing and development tools have a bunch of dependencies, +all managed by [bundler](http://bundler.io/) according to the +[Puppet support matrix](http://docs.puppetlabs.com/guides/platforms.html#ruby-versions). - - When introducing a new feature, make sure it is properly - documented in the README.md +By default the tests use a baseline version of Puppet. - * Submission: +If you have Ruby 2.x or want a specific version of Puppet, +you must set an environment variable such as: - * Pre-requisites: + export PUPPET_VERSION="~> 4.2.0" - - Make sure you have a [GitHub account](https://github.com/join) +Install the dependencies like so... - * Preferred method: + bundle install - - Fork the repository on GitHub. +## Syntax and style - - Push your changes to a topic branch in your fork of the repository. +The test suite will run [Puppet Lint](http://puppet-lint.com/) and +[Puppet Syntax](https://github.com/gds-operations/puppet-syntax) to +check various syntax and style things. You can run these locally with: - - Submit a pull request to the repository in the puppet-community namespace. + bundle exec rake test -The long version -================ +## Running the unit tests - 1. Make separate commits for logically separate changes. +The unit test suite covers most of the code, as mentioned above please +add tests if you're adding new functionality. If you've not used +[rspec-puppet](http://rspec-puppet.com/) before then feel free to ask +about how best to test your new feature. To run your specific spec test +you can pass it to `SPEC`: - Please break your commits down into logically consistent units - which include new or changed tests relevant to the rest of the - change. The goal of doing this is to make the diff easier to - read for whoever is reviewing your code. In general, the easier - your diff is to read, the more likely someone will be happy to - review it and get it into the code base. + bundle exec rake spec SPEC=spec/foo_spec.rb - If you are going to refactor a piece of code, please do so as a - separate commit from your feature or bug fix changes. +## Integration tests - We also really appreciate changes that include tests to make - sure the bug is not re-introduced, and that the feature is not - accidentally broken. +The unit tests just check the code runs, not that it does exactly what +we want on a real machine. For that we're using +[beaker](https://github.com/puppetlabs/beaker). - Describe the technical detail of the change(s). If your - description starts to get too long, that is a good sign that you - probably need to split up your commit into more finely grained - pieces. +This fires up a new virtual machine (using vagrant) and runs a series of +simple tests against it after applying the module. You can run this +with: - Commits which plainly describe the things which help - reviewers check the patch and future developers understand the - code are much more likely to be merged in with a minimum of - bike-shedding or requested changes. Ideally, the commit message - would include information, and be in a form suitable for - inclusion in the release notes for the version of Puppet that - includes them. + bundle exec rake acceptance - Please also check that you are not introducing any trailing - whitespace or other "whitespace errors". You can do this by - running "git diff --check" on your changes before you commit. +This will run the tests on an Ubuntu 12.04 virtual machine. You can also +run the integration tests against Centos 6.5 with. - 2. Sending your patches + RS_SET=centos-64-x64 bundle exec rake acceptances - To submit your changes via a GitHub pull request, we _highly_ - recommend that you have them on a topic branch, instead of - directly on "master". +If you don't want to have to recreate the virtual machine every time you +can use `BEAKER_DESTROY=no` and `BEAKER_PROVISION=no`. On the first run you will +at least need `BEAKER_PROVISION` set to yes (the default). The Vagrantfile +for the created virtual machines will be in `.vagrant/beaker_vagrant_fies`. - It makes things much easier to keep track of, especially if - you decide to work on another thing before your first change - is merged in. - - GitHub has some pretty good - [general documentation](http://help.github.com/) on using - their site. They also have documentation on - [creating pull requests](http://help.github.com/send-pull-requests/). - - In general, after pushing your topic branch up to your - repository on GitHub, you can switch to the branch in the - GitHub UI and click "Pull Request" towards the top of the page - in order to open a pull request. - - - 3. Update the related GitHub issue. - - If there is a GitHub issue associated with the change you - submitted, then you should update the ticket to include the - location of your branch, along with any other commentary you - may wish to make. - -Testing -======= - -Getting Started ---------------- - -Our puppet modules provide [`Gemfile`](./Gemfile)s which can tell a ruby -package manager such as [bundler](http://bundler.io/) what Ruby packages, -or Gems, are required to build, develop, and test this software. - -Please make sure you have [bundler installed](http://bundler.io/#getting-started) -on your system, then use it to install all dependencies needed for this project, -by running - -```shell -% bundle install -Fetching gem metadata from https://rubygems.org/........ -Fetching gem metadata from https://rubygems.org/.. -Using rake (10.1.0) -Using builder (3.2.2) --- 8><-- many more --><8 -- -Using rspec-system-puppet (2.2.0) -Using serverspec (0.6.3) -Using rspec-system-serverspec (1.0.0) -Using bundler (1.3.5) -Your bundle is complete! -Use `bundle show [gemname]` to see where a bundled gem is installed. -``` - -NOTE some systems may require you to run this command with `sudo`. - -If you already have those gems installed, make sure they are up-to-date: - -```shell -% bundle update -``` - -With all dependencies in place and up-to-date we can now run the tests: - -```shell -% rake spec -``` - -This will execute all the [rspec tests](http://rspec-puppet.com/) tests -under [spec/defines](./spec/defines), [spec/classes](./spec/classes), -and so on. rspec tests may have the same kind of dependencies as the -module they are testing. While the module defines in its [Modulefile](./Modulefile), -rspec tests define them in [.fixtures.yml](./fixtures.yml). - -Writing Tests -------------- - -XXX getting started writing tests. - -If you have commit access to the repository -=========================================== - -Even if you have commit access to the repository, you will still need to -go through the process above, and have someone else review and merge -in your changes. The rule is that all changes must be reviewed by a -developer on the project (that did not write the code) to ensure that -all changes go through a code review process. - -Having someone other than the author of the topic branch recorded as -performing the merge is the record that they performed the code -review. - - -Additional Resources -==================== - -* [Getting additional help](http://puppetlabs.com/community/get-help) - -* [Writing tests](http://projects.puppetlabs.com/projects/puppet/wiki/Development_Writing_Tests) - -* [General GitHub documentation](http://help.github.com/) - -* [GitHub pull request documentation](http://help.github.com/send-pull-requests/) diff --git a/Gemfile b/Gemfile index 9e1482d..4e19aed 100644 --- a/Gemfile +++ b/Gemfile @@ -1,11 +1,64 @@ -source "https://rubygems.org" +source ENV['GEM_SOURCE'] || "https://rubygems.org" + +def location_for(place, fake_version = nil) + if place =~ /^(git[:@][^#]*)#(.*)/ + [fake_version, { :git => $1, :branch => $2, :require => false }].compact + elsif place =~ /^file:\/\/(.*)/ + ['>= 0', { :path => File.expand_path($1), :require => false }] + else + [place, { :require => false }] + end +end group :test do - gem "rake" - gem "puppet", ENV['PUPPET_VERSION'] || '~> 3.7.0' - gem "rspec", '< 3.2.0' - gem "rspec-puppet", '~> 2.1' - gem "puppetlabs_spec_helper" - gem "metadata-json-lint" - gem "rspec-puppet-facts" + gem 'rake', :require => false + gem 'rspec-puppet', :require => false, :git => 'https://github.com/rodjek/rspec-puppet.git' + gem 'puppet-lint', :require => false, :git => 'https://github.com/rodjek/puppet-lint.git' + gem 'metadata-json-lint', :require => false + gem 'rspec-puppet-facts', :require => false + gem 'rspec', :require => false + gem 'puppet-blacksmith', :require => false, :git => 'https://github.com/voxpupuli/puppet-blacksmith.git' + gem 'voxpupuli-release', :require => false, :git => 'https://github.com/voxpupuli/voxpupuli-release-gem.git' + gem 'rubocop', :require => false + gem 'rspec-puppet-utils', :require => false + gem 'puppetlabs_spec_helper', :require => false + gem 'puppet-lint-absolute_classname-check', :require => false + gem 'puppet-lint-leading_zero-check', :require => false + gem 'puppet-lint-trailing_comma-check', :require => false + gem 'puppet-lint-version_comparison-check', :require => false + gem 'puppet-lint-classes_and_types_beginning_with_digits-check', :require => false + gem 'puppet-lint-unquoted_string-check', :require => false + gem 'puppet-lint-variable_contains_upcase', :require => false +end + +group :development do + gem 'travis', :require => false + gem 'travis-lint', :require => false + gem 'guard-rake', :require => false +end + +group :system_tests do + gem 'beaker', :require => false + if beaker_version = ENV['BEAKER_VERSION'] + gem 'beaker', *location_for(beaker_version) + end + if beaker_rspec_version = ENV['BEAKER_RSPEC_VERSION'] + gem 'beaker-rspec', *location_for(beaker_rspec_version) + else + gem 'beaker-rspec', :require => false + end + gem 'beaker-puppet_install_helper', :require => false end + + + +if facterversion = ENV['FACTER_GEM_VERSION'] +gem 'facter', facterversion.to_s, :require => false, :groups => [:test] +else +gem 'facter', :require => false, :groups => [:test] +end + +ENV['PUPPET_VERSION'].nil? ? puppetversion = '3.8.4' : puppetversion = ENV['PUPPET_VERSION'].to_s +gem 'puppet', puppetversion, :require => false, :groups => [:test] + +# vim:ft=ruby diff --git a/Rakefile b/Rakefile index 2343b25..9e39d33 100644 --- a/Rakefile +++ b/Rakefile @@ -1,44 +1,38 @@ require 'puppetlabs_spec_helper/rake_tasks' -require 'puppet/version' -require 'puppet/vendor/semantic/lib/semantic' unless Puppet.version.to_f < 3.6 require 'puppet-lint/tasks/puppet-lint' require 'puppet-syntax/tasks/puppet-syntax' +require 'metadata-json-lint/rake_task' +require 'puppet_blacksmith/rake_tasks' +require 'voxpupuli/release/rake_tasks' +require 'rubocop/rake_task' -Rake::Task[:lint].clear +RuboCop::RakeTask.new -PuppetLint.configuration.relative = true -PuppetLint.configuration.send("disable_80chars") -PuppetLint.configuration.log_format = "%{path}:%{linenumber}:%{check}:%{KIND}:%{message}" +PuppetLint.configuration.log_format = '%{path}:%{linenumber}:%{check}:%{KIND}:%{message}' PuppetLint.configuration.fail_on_warnings = true - -# Forsake support for Puppet 2.6.2 for the benefit of cleaner code. -# http://puppet-lint.com/checks/class_parameter_defaults/ -PuppetLint.configuration.send('disable_class_parameter_defaults') -# http://puppet-lint.com/checks/class_inherits_from_params_class/ +PuppetLint.configuration.send('relative') +PuppetLint.configuration.send('disable_80chars') PuppetLint.configuration.send('disable_class_inherits_from_params_class') +PuppetLint.configuration.send('disable_documentation') +PuppetLint.configuration.send('disable_single_quote_string_with_variables') -exclude_paths = [ - "bundle/**/*", - "pkg/**/*", - "vendor/**/*", - "spec/**/*", -] +exclude_paths = %w( + pkg/**/* + vendor/**/* + spec/**/* +) PuppetLint.configuration.ignore_paths = exclude_paths PuppetSyntax.exclude_paths = exclude_paths -desc "Populate CONTRIBUTORS file" -task :contributors do - system("git log --format='%aN' | sort -u > CONTRIBUTORS") -end - -task :metadata do - sh "metadata-json-lint metadata.json" +desc 'Run acceptance tests' +RSpec::Core::RakeTask.new(:acceptance) do |t| + t.pattern = 'spec/acceptance' end -desc "Run syntax, lint, and spec tests." -task :test => [ - :syntax, +desc 'Run metadata_lint, lint, syntax, and spec tests.' +task test: [ + :metadata_lint, :lint, + :syntax, :spec, - :metadata, ] diff --git a/spec/acceptance/nodesets/centos-59-x64.yml b/spec/acceptance/nodesets/centos-59-x64.yml new file mode 100644 index 0000000..2ad90b8 --- /dev/null +++ b/spec/acceptance/nodesets/centos-59-x64.yml @@ -0,0 +1,10 @@ +HOSTS: + centos-59-x64: + roles: + - master + platform: el-5-x86_64 + box : centos-59-x64-vbox4210-nocm + box_url : http://puppet-vagrant-boxes.puppetlabs.com/centos-59-x64-vbox4210-nocm.box + hypervisor : vagrant +CONFIG: + type: git diff --git a/spec/acceptance/nodesets/centos-64-x64-pe.yml b/spec/acceptance/nodesets/centos-64-x64-pe.yml new file mode 100644 index 0000000..7d9242f --- /dev/null +++ b/spec/acceptance/nodesets/centos-64-x64-pe.yml @@ -0,0 +1,12 @@ +HOSTS: + centos-64-x64: + roles: + - master + - database + - dashboard + platform: el-6-x86_64 + box : centos-64-x64-vbox4210-nocm + box_url : http://puppet-vagrant-boxes.puppetlabs.com/centos-64-x64-vbox4210-nocm.box + hypervisor : vagrant +CONFIG: + type: pe diff --git a/spec/acceptance/nodesets/centos-65-x64.yml b/spec/acceptance/nodesets/centos-65-x64.yml new file mode 100644 index 0000000..4e2cb80 --- /dev/null +++ b/spec/acceptance/nodesets/centos-65-x64.yml @@ -0,0 +1,10 @@ +HOSTS: + centos-65-x64: + roles: + - master + platform: el-6-x86_64 + box : centos-65-x64-vbox436-nocm + box_url : http://puppet-vagrant-boxes.puppetlabs.com/centos-65-x64-virtualbox-nocm.box + hypervisor : vagrant +CONFIG: + type: foss diff --git a/spec/acceptance/nodesets/ubuntu-server-12042-x64.yml b/spec/acceptance/nodesets/ubuntu-server-12042-x64.yml new file mode 100644 index 0000000..d065b30 --- /dev/null +++ b/spec/acceptance/nodesets/ubuntu-server-12042-x64.yml @@ -0,0 +1,10 @@ +HOSTS: + ubuntu-server-12042-x64: + roles: + - master + platform: ubuntu-12.04-amd64 + box : ubuntu-server-12042-x64-vbox4210-nocm + box_url : http://puppet-vagrant-boxes.puppetlabs.com/ubuntu-server-12042-x64-vbox4210-nocm.box + hypervisor : vagrant +CONFIG: + type: foss diff --git a/spec/acceptance/nodesets/ubuntu-server-1404-x64.yml b/spec/acceptance/nodesets/ubuntu-server-1404-x64.yml new file mode 100644 index 0000000..cba1cd0 --- /dev/null +++ b/spec/acceptance/nodesets/ubuntu-server-1404-x64.yml @@ -0,0 +1,11 @@ +HOSTS: + ubuntu-server-1404-x64: + roles: + - master + platform: ubuntu-14.04-amd64 + box : puppetlabs/ubuntu-14.04-64-nocm + box_url : https://vagrantcloud.com/puppetlabs/ubuntu-14.04-64-nocm + hypervisor : vagrant +CONFIG: + log_level : debug + type: git -- cgit v1.2.3