From aeb3bdba1c66f245e9eda46a564a956252cc609b Mon Sep 17 00:00:00 2001 From: varac Date: Wed, 2 Nov 2016 21:26:14 +0100 Subject: Compile test, test apt::conf --- spec/classes/init_spec.rb | 16 +++++++++++ spec/defines/conf_spec.rb | 72 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 spec/classes/init_spec.rb create mode 100644 spec/defines/conf_spec.rb diff --git a/spec/classes/init_spec.rb b/spec/classes/init_spec.rb new file mode 100644 index 0000000..dfb7521 --- /dev/null +++ b/spec/classes/init_spec.rb @@ -0,0 +1,16 @@ +require 'spec_helper' + +describe 'apt', :type => :class do + let :pre_condition do + 'class { "apt": }' + end + let(:facts) { { + :lsbdistid => 'Debian', + :osfamily => 'Debian', + :operatingsystem => 'Debian', + :debian_release => 'jessie', + :lsbdistcodename => 'jessie', + :puppetversion => Puppet.version, } } + #it { is_expected.to compile.with_all_deps } + it { is_expected.to compile } +end diff --git a/spec/defines/conf_spec.rb b/spec/defines/conf_spec.rb new file mode 100644 index 0000000..59f49df --- /dev/null +++ b/spec/defines/conf_spec.rb @@ -0,0 +1,72 @@ +require 'spec_helper' +describe 'apt::apt_conf', :type => :define do + let :pre_condition do + 'class { "apt": }' + end + let(:facts) { { + :lsbdistid => 'Debian', + :osfamily => 'Debian', + :operatingsystem => 'Debian', + :debian_release => 'jessie', + :lsbdistcodename => 'jessie', + :puppetversion => Puppet.version, } } + let :title do + 'norecommends' + end + + describe "when creating an apt_conf snippet" do + let :default_params do + { + :ensure => 'present', + :content => "Apt::Install-Recommends 0;\nApt::AutoRemove::InstallRecommends 1;\n" + } + end + let :params do + default_params + end + let :filename do + "/etc/apt/apt.conf.d/norecommends" + end + + it { is_expected.to contain_file(filename).with({ + 'ensure' => 'present', + 'content' => /Apt::Install-Recommends 0;\nApt::AutoRemove::InstallRecommends 1;/, + 'owner' => 'root', + # default to '0', not 'root' + #'group' => 'root', + 'mode' => '0644', + }) + } + + end + + describe "when creating a preference without content" do + let :params do + { + :ensure => 'absent', + } + end + + it 'fails' do + expect { subject.call } .to raise_error(Puppet::Error, /One of \$source or \$content must be specified for apt_conf norecommends/) + end + end + + describe "when removing an apt preference" do + let :params do + { + :ensure => 'absent', + :content => "Apt::Install-Recommends 0;\nApt::AutoRemove::InstallRecommends 1;\n", + } + end + + let :filename do + "/etc/apt/apt.conf.d/norecommends" + end + + it { is_expected.to contain_file(filename).with({ + 'ensure' => 'absent', + }) + } + end +end -- cgit v1.2.3 From 92e6aab93e081281d25ff69bdceb779943038b24 Mon Sep 17 00:00:00 2001 From: varac Date: Wed, 2 Nov 2016 22:47:30 +0100 Subject: Improve tests setup - Add .fixtures.yaml to checkout common module - Use puppetlabs-spec-helper in spec_helper.rb --- .fixtures.yml | 6 ++++++ Gemfile | 4 ++-- spec/spec_helper.rb | 12 ++++++------ 3 files changed, 14 insertions(+), 8 deletions(-) create mode 100644 .fixtures.yml diff --git a/.fixtures.yml b/.fixtures.yml new file mode 100644 index 0000000..99efd66 --- /dev/null +++ b/.fixtures.yml @@ -0,0 +1,6 @@ +fixtures: + repositories: + "common": + "repo": "https://gitlab.com/shared-puppet-modules-group/common.git" + symlinks: + "apt": "#{source_dir}" diff --git a/Gemfile b/Gemfile index 7ef1ec3..44630f4 100644 --- a/Gemfile +++ b/Gemfile @@ -2,8 +2,8 @@ source "https://rubygems.org" group :development, :unit_tests do gem "rake" - gem "rspec", '< 3.2.0' - gem "rspec-puppet" + gem "rspec-puppet", "~> 2.1", :require => false + gem "rspec-core", "3.1.7", :require => false gem "puppetlabs_spec_helper" gem "metadata-json-lint" gem "rspec-puppet-facts" diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 21d1a98..3cca63a 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,12 +1,12 @@ # https://puppetlabs.com/blog/testing-modules-in-the-puppet-forge -require 'rspec-puppet' -require 'mocha/api' +require 'puppetlabs_spec_helper/module_spec_helper' -RSpec.configure do |c| +fixture_path = File.expand_path(File.join(__FILE__, '..', 'fixtures')) - c.module_path = File.expand_path(File.join(File.dirname(__FILE__), '..', '..')) - c.color = true +RSpec.configure do |c| - #Puppet.features.stubs(:root? => true) + c.manifest_dir = File.join(fixture_path, 'manifests') + c.module_path = File.join(fixture_path, 'modules') + c.color = true end -- cgit v1.2.3 From 1c0278c9cece0414c8d1a64b67827d85aabf03c0 Mon Sep 17 00:00:00 2001 From: varac Date: Wed, 2 Nov 2016 23:33:35 +0100 Subject: Test multiple puppet versions --- .gitlab-ci.yml | 39 ++++++++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2f381cd..49bf2e3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,13 +1,42 @@ image: leapcode/ruby before_script: - - ruby -v - - sudo gem install bundler --no-ri --no-rdoc - - sudo bundle install --jobs $(nproc) --without system_tests --path=/var/cache/gitlab-runner/ "${FLAGS[@]}" + - "[ -d /var/cache/gitlab-runner ] || sudo mkdir /var/cache/gitlab-runner" + - sudo chown cirunner:cirunner -R /var/cache/gitlab-runner + - bundle install --jobs $(nproc) --without system_tests --path=/var/cache/gitlab-runner/ "${FLAGS[@]}" -# don't fail on lint warnings -rspec: +.job_template: &job_definition script: + # don't fail on lint warnings - bundle exec rake lint || /bin/true - bundle exec rake syntax - bundle exec rake validate - bundle exec rake spec + +# Default debian jessie versions +test:puppet37: + variables: + PUPPET_VERSION: "~> 3.7.2" + FACTER_VERSION: '~> 2.2.0' + <<: *job_definition + +test:puppet38_future_parser: + variables: + PUPPET_VERSION: '~> 3.8' + FACTER_VERSION: '~> 2.2.0' + FUTURE_PARSER: 'yes' + <<: *job_definition + +# Default debia stretch versions +test:puppet45: + variables: + PUPPET_VERSION: "~> 4.5.2" + FACTER_VERSION: '~> 2.4.6' + <<: *job_definition + +# Latest greatest +test:puppet4x: + variables: + PUPPET_VERSION: "> 4" + FACTER_VERSION: '> 2' + <<: *job_definition + -- cgit v1.2.3 From 4b25160f36f7bda61e4b7da9cc21d9005aec0485 Mon Sep 17 00:00:00 2001 From: varac Date: Thu, 3 Nov 2016 00:33:38 +0100 Subject: Add more facts --- spec/classes/init_spec.rb | 2 ++ spec/defines/conf_spec.rb | 2 ++ 2 files changed, 4 insertions(+) diff --git a/spec/classes/init_spec.rb b/spec/classes/init_spec.rb index dfb7521..9ba554f 100644 --- a/spec/classes/init_spec.rb +++ b/spec/classes/init_spec.rb @@ -9,7 +9,9 @@ describe 'apt', :type => :class do :osfamily => 'Debian', :operatingsystem => 'Debian', :debian_release => 'jessie', + :debian_codename => 'jessie', :lsbdistcodename => 'jessie', + :virtual => 'physical', :puppetversion => Puppet.version, } } #it { is_expected.to compile.with_all_deps } it { is_expected.to compile } diff --git a/spec/defines/conf_spec.rb b/spec/defines/conf_spec.rb index 59f49df..cc4fb1f 100644 --- a/spec/defines/conf_spec.rb +++ b/spec/defines/conf_spec.rb @@ -8,7 +8,9 @@ describe 'apt::apt_conf', :type => :define do :osfamily => 'Debian', :operatingsystem => 'Debian', :debian_release => 'jessie', + :debian_codename => 'jessie', :lsbdistcodename => 'jessie', + :virtual => 'physical', :puppetversion => Puppet.version, } } let :title do 'norecommends' -- cgit v1.2.3 From 83c7034b8925d73a2c8157e2841ccf66c0ae23a7 Mon Sep 17 00:00:00 2001 From: varac Date: Thu, 3 Nov 2016 00:34:17 +0100 Subject: Ignore spec/fixtures --- .gitignore | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 3b626b8..ad8ff1f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,7 @@ /pkg/ /Gemfile.lock /vendor/ -/spec/fixtures/manifests/* -/spec/fixtures/modules/* -!/spec/fixtures/modules/apt -!/spec/fixtures/modules/apt/* +/spec/fixtures /log /.vagrant/ /.bundle/ -- cgit v1.2.3