summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Galić <i.galic@brainsware.org>2016-01-08 12:38:04 +0100
committerIgor Galić <i.galic@brainsware.org>2016-01-08 12:38:04 +0100
commit8473912c31aa08e0453789ed31cbd63aa344de15 (patch)
tree8cfd14c5d8ff0885bcca9120d3296f4c193d950d
parentc72819a604611356a23486830507175b6bc8fe55 (diff)
Update from voxpupuli modulesync_config
-rw-r--r--.gitignore2
-rw-r--r--.rubocop.yml64
-rw-r--r--.travis.yml31
-rw-r--r--CONTRIBUTING.md218
-rw-r--r--Gemfile69
-rw-r--r--Rakefile50
-rw-r--r--spec/acceptance/nodesets/centos-59-x64.yml10
-rw-r--r--spec/acceptance/nodesets/centos-64-x64-pe.yml12
-rw-r--r--spec/acceptance/nodesets/centos-65-x64.yml10
-rw-r--r--spec/acceptance/nodesets/ubuntu-server-12042-x64.yml10
-rw-r--r--spec/acceptance/nodesets/ubuntu-server-1404-x64.yml11
11 files changed, 275 insertions, 212 deletions
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