From 191211ad6bfdf653f4ebf036e0eeee5ed3be314b Mon Sep 17 00:00:00 2001 From: gbloquel Date: Fri, 5 Aug 2016 23:32:07 +0200 Subject: [PATCH] FIX unit tests and lint --- .gitignore | 2 + Gemfile | 3 +- Rakefile | 2 +- manifests/config.pp | 11 ++- manifests/service.pp | 2 +- spec/classes/config_spec.rb | 16 ++-- spec/classes/init_spec.rb | 118 +++++++++++++++------------- spec/classes/package_spec.rb | 144 +++++++++++++++++++---------------- spec/classes/service_spec.rb | 94 ++++++++++++----------- spec/spec_helper.rb | 2 + 10 files changed, 211 insertions(+), 183 deletions(-) diff --git a/.gitignore b/.gitignore index 5c9272c..c50cd9b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ *.swp +.bundle .ruby-version .ruby-gemset Gemfile.lock @@ -6,3 +7,4 @@ pkg spec/fixtures/ .vagrant/ log/ +vendor/ diff --git a/Gemfile b/Gemfile index 97adf01..a6353b3 100644 --- a/Gemfile +++ b/Gemfile @@ -11,7 +11,7 @@ group :test do if RUBY_VERSION >= '1.8.7' and RUBY_VERSION < '1.9' gem 'rspec', '~> 2.0' end - + gem 'safe_yaml', '~> 1.0.4' gem 'rake' gem 'puppet-lint' gem 'rspec-puppet', :git => 'https://github.com/rodjek/rspec-puppet.git' @@ -19,6 +19,7 @@ group :test do gem 'puppetlabs_spec_helper' gem 'simplecov' gem 'metadata-json-lint' + gem 'rspec-puppet-facts', :require => false end group :development do diff --git a/Rakefile b/Rakefile index 2e0ac6f..ec6a409 100644 --- a/Rakefile +++ b/Rakefile @@ -1,7 +1,7 @@ require 'puppetlabs_spec_helper/rake_tasks' require 'puppet-lint/tasks/puppet-lint' PuppetLint.configuration.send('disable_80chars') -PuppetLint.configuration.ignore_paths = ["spec/**/*.pp", "pkg/**/*.pp"] +PuppetLint.configuration.ignore_paths = ["spec/**/*.pp", "pkg/**/*.pp", "vendor/**/*.pp"] desc "Validate manifests, templates, and ruby files" task :validate do diff --git a/manifests/config.pp b/manifests/config.pp index e04f3a9..8a779bd 100644 --- a/manifests/config.pp +++ b/manifests/config.pp @@ -26,7 +26,7 @@ $nexus_context = $::nexus::nexus_context, $nexus_work_dir = $::nexus::nexus_work_dir, $nexus_data_folder = $::nexus::nexus_data_folder, - $version = $::nexus::version + $version = $::nexus::version, ) { if $version !~ /\d.*/ or versioncmp($version, '3.0.0') >= 0 { @@ -63,11 +63,10 @@ if $nexus_data_folder { file{ $nexus_data_dir : - ensure => 'link', - target => $nexus_data_folder, - force => true, - notify => Service['nexus'] + ensure => 'link', + target => $nexus_data_folder, + force => true, + notify => Service['nexus'] } } - } diff --git a/manifests/service.pp b/manifests/service.pp index ce3507c..f907f9d 100644 --- a/manifests/service.pp +++ b/manifests/service.pp @@ -42,7 +42,7 @@ $nexus_script = "${nexus_home}/bin/nexus" if ($::operatingsystem == 'Debian' and versioncmp($::operatingsystemrelease, '8.0') > 0) or - ($::operatingsystem == 'Ubuntu' and versioncmp($::operatingsystemrelease, '15.04') > 0) { + ($::operatingsystem == 'Ubuntu' and versioncmp($::operatingsystemrelease, '15.04') > 0) { file { '/lib/systemd/system/nexus.service': mode => '0644', owner => 'root', diff --git a/spec/classes/config_spec.rb b/spec/classes/config_spec.rb index a4354f1..98a9362 100644 --- a/spec/classes/config_spec.rb +++ b/spec/classes/config_spec.rb @@ -3,16 +3,18 @@ describe 'nexus::config', :type => :class do let(:params) { { - 'nexus_root' => '/foo', - 'nexus_home_dir' => '/bar', - 'nexus_host' => '1.1.1.1', - 'nexus_port' => '8888', - 'nexus_context' => '/baz', - 'nexus_work_dir' => '/foom', + 'nexus_root' => '/foo', + 'nexus_home_dir' => '/bar', + 'nexus_host' => '1.1.1.1', + 'nexus_port' => '8888', + 'nexus_context' => '/baz', + 'nexus_work_dir' => '/foom', + 'version' => '2.11.2', + 'nexus_data_folder' => '', } } - context 'with test values' do + context 'with nexus version 2.x test values' do it { should contain_class('nexus::config') } it { should contain_file_line('nexus-application-host').with( diff --git a/spec/classes/init_spec.rb b/spec/classes/init_spec.rb index 0f63803..a2ac385 100644 --- a/spec/classes/init_spec.rb +++ b/spec/classes/init_spec.rb @@ -1,71 +1,79 @@ require 'spec_helper' describe 'nexus', :type => :class do - let(:params) { - { - 'version' => '2.11.2' - } - } + on_supported_os.each do |os, facts| + context "on #{os}" do + let(:facts) do + facts + end - context 'no params set' do - let(:params) {{}} + let(:params) { + { + 'version' => '2.11.2' + } + } - it 'should fail if no version configured' do - expect { should compile }.to raise_error(RSpec::Expectations::ExpectationNotMetError, - /Cannot set version nexus version to "latest" or leave undefined./) - end - end + context 'no params set' do + let(:params) {{}} - context 'with a version set' do - it { should contain_class('nexus') } - it { should contain_class('nexus::params') } + it 'should fail if no version configured' do + expect { should compile }.to raise_error(RSpec::Expectations::ExpectationNotMetError, + /Cannot set version nexus version to "latest" or leave undefined./) + end + end - it { should contain_group('nexus').with( - 'ensure' => 'present', - ) } + context 'with a version set' do + it { should contain_class('nexus') } + it { should contain_class('nexus::params') } - it { should contain_user('nexus').with( - 'ensure' => 'present', - 'comment' => 'Nexus User', - 'gid' => 'nexus', - 'home' => '/srv', - 'shell' => '/bin/sh', - 'system' => true, - 'require' => 'Group[nexus]', - ) } + it { should contain_group('nexus').with( + 'ensure' => 'present', + ) } - it { should contain_anchor('nexus::begin') } - it { should contain_class('nexus::package').that_requires( - 'Anchor[nexus::begin]' ) } - it { should contain_class('nexus::config').that_requires( - 'Class[nexus::package]' ).that_notifies('Class[nexus::service]') } - it { should contain_class('nexus::service').that_subscribes_to( - 'Class[nexus::config]' ) } - it { should contain_anchor('nexus::end').that_requires( - 'Class[nexus::service]' ) } + it { should contain_user('nexus').with( + 'ensure' => 'present', + 'comment' => 'Nexus User', + 'gid' => 'nexus', + 'home' => '/srv', + 'shell' => '/bin/sh', + 'system' => true, + 'require' => 'Group[nexus]', + ) } - it 'should handle deploy_pro' do - params.merge!( - { - 'deploy_pro' => true, - } - ) + it { should contain_anchor('nexus::setup') } + it { should contain_class('nexus::package').that_requires( + 'Anchor[nexus::setup]' ) } + it { should contain_class('nexus::config').that_requires( + 'Class[nexus::package]' ).that_notifies('Class[nexus::service]') } + it { should contain_class('nexus::service').that_subscribes_to( + 'Class[nexus::config]' ) } + it { should contain_anchor('nexus::done').that_requires( + 'Class[nexus::service]' ) } - should create_class('nexus::package').with( - 'deploy_pro' => true, - 'download_site' => 'http://download.sonatype.com/nexus/professional-bundle', - ) - end + it 'should handle deploy_pro' do + params.merge!( + { + 'deploy_pro' => true, + } + ) - it 'should not have a user or group if nexus_manage_user is false' do - params.merge!( - { - 'nexus_manage_user' => false, - } - ) + should create_class('nexus::package').with( + 'deploy_pro' => true, + 'download_site' => 'http://download.sonatype.com/nexus/professional-bundle', + ) + end + + it 'should not have a user or group if nexus_manage_user is false' do + params.merge!( + { + 'nexus_manage_user' => false, + } + ) - should_not contain_group('nexus') - should_not contain_user('nexus') + should_not contain_group('nexus') + should_not contain_user('nexus') + end + end end end end diff --git a/spec/classes/package_spec.rb b/spec/classes/package_spec.rb index a1a82a2..b8b10ee 100644 --- a/spec/classes/package_spec.rb +++ b/spec/classes/package_spec.rb @@ -1,84 +1,94 @@ require 'spec_helper' describe 'nexus::package', :type => :class do - let(:params) { - { - 'deploy_pro' => false, - 'download_site' => 'http://download.sonatype.com/nexus/oss', - 'nexus_root' => '/srv', - 'nexus_home_dir' => 'nexus', - 'nexus_user' => 'nexus', - 'nexus_group' => 'nexus', - 'nexus_work_dir' => '/srv/sonatype-work/nexus', - 'nexus_work_dir_manage' => true, - 'nexus_work_recurse' => true, - # Assume a good revision as init.pp screens for us - 'revision' => '01', - 'version' => '2.11.2', - 'download_folder' => '/srv', - } - } + on_supported_os.each do |os, facts| + context "on #{os}" do + let(:facts) do + facts + end - context 'with default values' do - it { should contain_class('nexus::package') } + let(:params) { + { + 'deploy_pro' => false, + 'download_site' => 'http://download.sonatype.com/nexus/oss', + 'nexus_root' => '/srv', + 'nexus_home_dir' => 'nexus', + 'nexus_user' => 'nexus', + 'nexus_group' => 'nexus', + 'nexus_work_dir' => '/srv/sonatype-work/nexus', + 'nexus_work_dir_manage' => true, + 'nexus_work_recurse' => true, + 'nexus_type' => 'bundle', + 'nexus_selinux_ignore_defaults' => true, + # Assume a good revision as init.pp screens for us + 'revision' => '01', + 'version' => '2.11.2', + 'download_folder' => '/srv', + } + } - it { should contain_wget__fetch('nexus-2.11.2-01-bundle.tar.gz').with( - 'source' => 'http://download.sonatype.com/nexus/oss/nexus-2.11.2-01-bundle.tar.gz', - 'destination' => '/srv/nexus-2.11.2-01-bundle.tar.gz', - 'before' => 'Exec[nexus-untar]', - ) } + context 'with default values' do + it { should contain_class('nexus::package') } - it { should contain_exec('nexus-untar').with( - 'command' => 'tar zxf /srv/nexus-2.11.2-01-bundle.tar.gz --directory /srv', - 'creates' => '/srv/nexus-2.11.2-01', - 'path' => [ '/bin', '/usr/bin' ], - ) } + it { should contain_wget__fetch('nexus-2.11.2-01-bundle.tar.gz').with( + 'source' => 'http://download.sonatype.com/nexus/oss/nexus-2.11.2-01-bundle.tar.gz', + 'destination' => '/srv/nexus-2.11.2-01-bundle.tar.gz', + 'before' => 'Exec[nexus-untar]', + ) } - it { should contain_file('/srv/nexus-2.11.2-01').with( - 'ensure' => 'directory', - 'owner' => 'nexus', - 'group' => 'nexus', - 'recurse' => true, - 'require' => 'Exec[nexus-untar]', - ) } + it { should contain_exec('nexus-untar').with( + 'command' => 'tar zxf /srv/nexus-2.11.2-01-bundle.tar.gz --directory /srv', + 'creates' => '/srv/nexus-2.11.2-01', + 'path' => [ '/bin', '/usr/bin' ], + ) } - it { should contain_file('/srv/sonatype-work/nexus').with( - 'ensure' => 'directory', - 'owner' => 'nexus', - 'group' => 'nexus', - 'recurse' => true, - 'require' => 'Exec[nexus-untar]', - ) } + it { should contain_file('/srv/nexus-2.11.2-01').with( + 'ensure' => 'directory', + 'owner' => 'nexus', + 'group' => 'nexus', + 'recurse' => true, + 'require' => 'Exec[nexus-untar]', + ) } - it { should contain_file('/srv/nexus').with( - 'ensure' => 'link', - 'target' => '/srv/nexus-2.11.2-01', - 'require' => 'Exec[nexus-untar]', - ) } + it { should contain_file('/srv/sonatype-work/nexus').with( + 'ensure' => 'directory', + 'owner' => 'nexus', + 'group' => 'nexus', + 'recurse' => true, + 'require' => 'Exec[nexus-untar]', + ) } - it 'should handle deploy_pro' do - params.merge!( - { - 'deploy_pro' => true, - 'download_site' => 'http://download.sonatype.com/nexus/professional-bundle', - } - ) + it { should contain_file('/srv/nexus').with( + 'ensure' => 'link', + 'target' => '/srv/nexus-2.11.2-01', + 'require' => 'Exec[nexus-untar]', + ) } + + it 'should handle deploy_pro' do + params.merge!( + { + 'deploy_pro' => true, + 'download_site' => 'http://download.sonatype.com/nexus/professional-bundle', + } + ) - should contain_wget__fetch('nexus-professional-2.11.2-01-bundle.tar.gz').with( - 'source' => 'http://download.sonatype.com/nexus/professional-bundle/nexus-professional-2.11.2-01-bundle.tar.gz', - 'destination' => '/srv/nexus-professional-2.11.2-01-bundle.tar.gz', - ) + should contain_wget__fetch('nexus-professional-2.11.2-01-bundle.tar.gz').with( + 'source' => 'http://download.sonatype.com/nexus/professional-bundle/nexus-professional-2.11.2-01-bundle.tar.gz', + 'destination' => '/srv/nexus-professional-2.11.2-01-bundle.tar.gz', + ) - should contain_exec('nexus-untar').with( - 'command' => 'tar zxf /srv/nexus-professional-2.11.2-01-bundle.tar.gz --directory /srv', - 'creates' => '/srv/nexus-professional-2.11.2-01', - ) + should contain_exec('nexus-untar').with( + 'command' => 'tar zxf /srv/nexus-professional-2.11.2-01-bundle.tar.gz --directory /srv', + 'creates' => '/srv/nexus-professional-2.11.2-01', + ) - should contain_file('/srv/nexus-professional-2.11.2-01') + should contain_file('/srv/nexus-professional-2.11.2-01') - should contain_file('/srv/nexus').with( - 'target' => '/srv/nexus-professional-2.11.2-01', - ) + should contain_file('/srv/nexus').with( + 'target' => '/srv/nexus-professional-2.11.2-01', + ) + end + end end end end diff --git a/spec/classes/service_spec.rb b/spec/classes/service_spec.rb index 15892f4..41f09f3 100644 --- a/spec/classes/service_spec.rb +++ b/spec/classes/service_spec.rb @@ -1,51 +1,55 @@ require 'spec_helper' describe 'nexus::service', :type => :class do - let(:params) { - { - 'nexus_home' => '/srv/nexus', - 'nexus_user' => 'nexus', - 'version' => '01', - } - } - - context 'with test values' do - it { should contain_class('nexus::service') } - - it { should contain_file_line('nexus_NEXUS_HOME').with( - 'path' => '/srv/nexus/bin/nexus', - 'match' => '^#?NEXUS_HOME=', - 'line' => 'NEXUS_HOME=/srv/nexus', - ) } - - it { should contain_file_line('nexus_RUN_AS_USER').with( - 'path' => '/srv/nexus/bin/nexus', - 'match' => '^#?RUN_AS_USER=', - 'line' => 'RUN_AS_USER=${run_as_user:-nexus}', - ) } - - it { should contain_file('/etc/init.d/nexus').with( - 'ensure' => 'present', - 'owner' => 'root', - 'group' => 'root', - 'mode' => '0755', - 'source' => 'file:///srv/nexus/bin/nexus', - 'require' => ['File_line[nexus_NEXUS_HOME]', 'File_line[nexus_RUN_AS_USER]'], - 'notify' => 'Service[nexus]', - ) } - - it { should contain_service('nexus').with( - 'ensure' => 'running', - 'enable' => true, - 'status' => 'env run_as_user=root /etc/init.d/nexus status', - ) } - - it 'should have the correct status line when version >= 2.8.0' do - params.merge!({'version' => '2.8.0'}) - - should contain_service('nexus').with( - 'status' => 'env run_as_user=nexus /etc/init.d/nexus status', - ) + on_supported_os.each do |os, facts| + context "on #{os}" do + let(:facts) do + facts + end + let(:params) { + { + 'nexus_home' => '/srv/nexus', + 'nexus_user' => 'nexus', + 'nexus_group' => 'nexus', + 'version' => '01', + } + } + + context 'with test values' do + it { should contain_class('nexus::service') } + + it { should contain_file_line('nexus_NEXUS_HOME').with( + 'path' => '/srv/nexus/bin/nexus', + 'match' => '^#?NEXUS_HOME=', + 'line' => 'NEXUS_HOME=/srv/nexus', + ) } + + it { should contain_file_line('nexus_RUN_AS_USER').with( + 'path' => '/srv/nexus/bin/nexus', + 'match' => '^#?RUN_AS_USER=', + 'line' => 'RUN_AS_USER=${run_as_user:-nexus}', + ) } + + it { should contain_file('/etc/init.d/nexus').with( + 'ensure' => 'link', + 'require' => ['File_line[nexus_NEXUS_HOME]', 'File_line[nexus_RUN_AS_USER]'], + 'notify' => 'Service[nexus]', + ) } + + it { should contain_service('nexus').with( + 'ensure' => 'running', + 'enable' => true, + 'status' => 'env run_as_user=root /etc/init.d/nexus status', + ) } + + it 'should have the correct status line when version >= 2.8.0' do + params.merge!({'version' => '2.8.0'}) + + should contain_service('nexus').with( + 'status' => 'env run_as_user=nexus /etc/init.d/nexus status', + ) + end + end end end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 245555f..3c8965c 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,3 +1,5 @@ require 'puppetlabs_spec_helper/module_spec_helper' +require 'rspec-puppet-facts' +include RspecPuppetFacts at_exit { RSpec::Puppet::Coverage.report! }