From add100a3a56291ae6d4f75e3843166b5382d8a36 Mon Sep 17 00:00:00 2001 From: Alex Schultz Date: Tue, 20 Oct 2015 13:03:56 -0500 Subject: [PATCH] Unit tests for the tweaks class This change implements tests for the tweaks class. Change-Id: Ic07671eaf17bb622cd906670901787aaa8b397dd Related-Bug: #1507751 --- deployment/puppet/tweaks/.fixtures.yml | 3 + deployment/puppet/tweaks/.gitignore | 1 + deployment/puppet/tweaks/Gemfile | 22 ++++++ deployment/puppet/tweaks/Rakefile | 22 ++++++ .../classes/tweaks_apache_wrappers_spec.rb | 47 +++++++++++++ .../tweaks_ubuntu_service_override_spec.rb | 69 +++++++++++++++++++ .../puppet/tweaks/spec/shared_examples.rb | 5 ++ deployment/puppet/tweaks/spec/spec_helper.rb | 9 +++ utils/jenkins/modules.disable_rspec | 1 - 9 files changed, 178 insertions(+), 1 deletion(-) create mode 100644 deployment/puppet/tweaks/.fixtures.yml create mode 100644 deployment/puppet/tweaks/.gitignore create mode 100644 deployment/puppet/tweaks/Gemfile create mode 100644 deployment/puppet/tweaks/Rakefile create mode 100644 deployment/puppet/tweaks/spec/classes/tweaks_apache_wrappers_spec.rb create mode 100644 deployment/puppet/tweaks/spec/defines/tweaks_ubuntu_service_override_spec.rb create mode 100644 deployment/puppet/tweaks/spec/shared_examples.rb create mode 100644 deployment/puppet/tweaks/spec/spec_helper.rb diff --git a/deployment/puppet/tweaks/.fixtures.yml b/deployment/puppet/tweaks/.fixtures.yml new file mode 100644 index 0000000000..0bca348d61 --- /dev/null +++ b/deployment/puppet/tweaks/.fixtures.yml @@ -0,0 +1,3 @@ +fixtures: + symlinks: + 'tweaks': "#{source_dir}" diff --git a/deployment/puppet/tweaks/.gitignore b/deployment/puppet/tweaks/.gitignore new file mode 100644 index 0000000000..1db51fed75 --- /dev/null +++ b/deployment/puppet/tweaks/.gitignore @@ -0,0 +1 @@ +spec/fixtures diff --git a/deployment/puppet/tweaks/Gemfile b/deployment/puppet/tweaks/Gemfile new file mode 100644 index 0000000000..b617a72490 --- /dev/null +++ b/deployment/puppet/tweaks/Gemfile @@ -0,0 +1,22 @@ +source 'https://rubygems.org' + +group :development, :test do + gem 'puppetlabs_spec_helper', :require => 'false' + gem 'rspec-puppet', '~> 2.2.0', :require => 'false' + gem 'metadata-json-lint', :require => 'false' + gem 'puppet-lint-param-docs', :require => 'false' + gem 'puppet-lint-absolute_classname-check', :require => 'false' + gem 'puppet-lint-absolute_template_path', :require => 'false' + gem 'puppet-lint-trailing_newline-check', :require => 'false' + gem 'puppet-lint-unquoted_string-check', :require => 'false' + gem 'puppet-lint-leading_zero-check', :require => 'false' + gem 'puppet-lint-variable_contains_upcase', :require => 'false' + gem 'puppet-lint-numericvariable', :require => 'false' + gem 'json', :require => 'false' +end + +if puppetversion = ENV['PUPPET_GEM_VERSION'] + gem 'puppet', puppetversion, :require => false +else + gem 'puppet', :require => false +end diff --git a/deployment/puppet/tweaks/Rakefile b/deployment/puppet/tweaks/Rakefile new file mode 100644 index 0000000000..db69c852e8 --- /dev/null +++ b/deployment/puppet/tweaks/Rakefile @@ -0,0 +1,22 @@ +require 'puppetlabs_spec_helper/rake_tasks' +require 'puppet-lint/tasks/puppet-lint' +require 'puppet-syntax/tasks/puppet-syntax' + +PuppetSyntax.exclude_paths ||= [] +PuppetSyntax.exclude_paths << "spec/fixtures/**/*" +PuppetSyntax.exclude_paths << "pkg/**/*" +PuppetSyntax.exclude_paths << "vendor/**/*" + +Rake::Task[:lint].clear +PuppetLint::RakeTask.new :lint do |config| + config.ignore_paths = ["spec/**/*.pp", "vendor/**/*.pp"] + config.fail_on_warnings = false # TODO(aschultz): fix warnings + config.log_format = '%{path}:%{linenumber}:%{KIND}: %{message}' + config.disable_checks = [ + "80chars", + "class_inherits_from_params_class", + "class_parameter_defaults", + "only_variable_string", + "autoloader_layout", # TODO(aschultz): this is from included defines in classes, should be fixed and this should be removed. + ] +end diff --git a/deployment/puppet/tweaks/spec/classes/tweaks_apache_wrappers_spec.rb b/deployment/puppet/tweaks/spec/classes/tweaks_apache_wrappers_spec.rb new file mode 100644 index 0000000000..a356ce784b --- /dev/null +++ b/deployment/puppet/tweaks/spec/classes/tweaks_apache_wrappers_spec.rb @@ -0,0 +1,47 @@ +require 'spec_helper' + +describe 'tweaks::apache_wrappers' do + + let(:default_params) { { + } } + + shared_examples_for 'tweaks::apache_wrappers configuration' do + let :params do + default_params + end + + + context 'with valid params' do + let :params do + default_params.merge({}) + end + + it 'configures with the default params' do + should contain_class('tweaks::apache_wrappers') + end + end + + end + + context 'on Debian platforms' do + let :facts do + { :osfamily => 'Debian', + :operatingsystem => 'Debian', + :hostname => 'hostname.example.com', } + end + + it_configures 'tweaks::apache_wrappers configuration' + end + + context 'on RedHat platforms' do + let :facts do + { :osfamily => 'RedHat', + :operatingsystem => 'RedHat', + :hostname => 'hostname.example.com', } + end + + it_configures 'tweaks::apache_wrappers configuration' + end + +end + diff --git a/deployment/puppet/tweaks/spec/defines/tweaks_ubuntu_service_override_spec.rb b/deployment/puppet/tweaks/spec/defines/tweaks_ubuntu_service_override_spec.rb new file mode 100644 index 0000000000..f41995eff5 --- /dev/null +++ b/deployment/puppet/tweaks/spec/defines/tweaks_ubuntu_service_override_spec.rb @@ -0,0 +1,69 @@ +require 'spec_helper' + +describe 'tweaks::ubuntu_service_override' do + let(:title) { 'something' } + + let(:default_params) { { + :service_name => title, + :package_name => title + } } + + shared_examples_for 'tweaks::ubuntu_service_override configuration' do + let :params do + default_params + end + + + context 'with valid params' do + let :params do + default_params.merge({}) + end + + it 'configures with the default params' do + should contain_tweaks__ubuntu_service_override(title) + if facts[:operatingsystem] == 'Ubuntu' + should contain_file("create_#{params[:service_name]}_override").with( + :path => "/etc/init/#{title}.override") + should contain_exec("remove_#{params[:service_name]}_override") + else + should_not contain_file("create_#{params[:service_name]}_override").with( + :path => "/etc/init.d/#{title}.override") + should_not contain_exec("remove_#{params[:service_name]}_override") + end + end + end + + end + + context 'on Debian platforms' do + let :facts do + { :osfamily => 'Debian', + :operatingsystem => 'Debian', + :hostname => 'hostname.example.com', } + end + + it_configures 'tweaks::ubuntu_service_override configuration' + end + + context 'on Ubuntu platforms' do + let :facts do + { :osfamily => 'Debian', + :operatingsystem => 'Ubuntu', + :hostname => 'hostname.example.com', } + end + + it_configures 'tweaks::ubuntu_service_override configuration' + end + + context 'on RedHat platforms' do + let :facts do + { :osfamily => 'RedHat', + :operatingsystem => 'RedHat', + :hostname => 'hostname.example.com', } + end + + it_configures 'tweaks::ubuntu_service_override configuration' + end + +end + diff --git a/deployment/puppet/tweaks/spec/shared_examples.rb b/deployment/puppet/tweaks/spec/shared_examples.rb new file mode 100644 index 0000000000..fec0eacc98 --- /dev/null +++ b/deployment/puppet/tweaks/spec/shared_examples.rb @@ -0,0 +1,5 @@ +shared_examples_for "a Puppet::Error" do |description| + it "with message matching #{description.inspect}" do + expect { is_expected.to have_class_count(1) }.to raise_error(Puppet::Error, description) + end +end diff --git a/deployment/puppet/tweaks/spec/spec_helper.rb b/deployment/puppet/tweaks/spec/spec_helper.rb new file mode 100644 index 0000000000..172614e991 --- /dev/null +++ b/deployment/puppet/tweaks/spec/spec_helper.rb @@ -0,0 +1,9 @@ +require 'puppetlabs_spec_helper/module_spec_helper' +require 'shared_examples' + +RSpec.configure do |c| + c.alias_it_should_behave_like_to :it_configures, 'configures' + c.alias_it_should_behave_like_to :it_raises, 'raises' +end + +at_exit { RSpec::Puppet::Coverage.report! } diff --git a/utils/jenkins/modules.disable_rspec b/utils/jenkins/modules.disable_rspec index fe4020f9f7..0f7183ece1 100644 --- a/utils/jenkins/modules.disable_rspec +++ b/utils/jenkins/modules.disable_rspec @@ -37,7 +37,6 @@ rsyslog ssh stdlib sysctl -tweaks vcsrepo vmware xinetd