diff --git a/Gemfile b/Gemfile index 605d99f..ce0c8f8 100644 --- a/Gemfile +++ b/Gemfile @@ -1,53 +1,53 @@ source ENV['GEM_SOURCE'] || 'https://rubygems.org' group :test do - gem 'puppetlabs_spec_helper', require: false + gem 'puppetlabs_spec_helper', '>= 2.11.0', require: false gem 'rspec-puppet', require: false gem 'rspec-puppet-facts', require: false gem 'rspec-puppet-utils', 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 gem 'metadata-json-lint', require: false gem 'puppet-blacksmith', require: false gem 'voxpupuli-release', require: false, git: 'https://github.com/voxpupuli/voxpupuli-release-gem.git' gem 'puppet-strings', '~> 1.0', require: false - gem 'rubocop-rspec', '~> 1.5', require: false if RUBY_VERSION >= '2.2.0' - gem 'json_pure', '<= 2.0.1', require: false if RUBY_VERSION < '2.0.0' + gem 'rubocop', '~> 0.49.1', require: false + gem 'rubocop-rspec', require: false gem 'rspec-its', 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 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 = '~> 4.0' : puppetversion = ENV['PUPPET_VERSION'].to_s gem 'puppet', puppetversion, require: false, groups: [:test] # vim: syntax=ruby diff --git a/spec/classes/resolv_conf_spec.rb b/spec/classes/resolv_conf_spec.rb index 9fc40d7..58e9fe2 100644 --- a/spec/classes/resolv_conf_spec.rb +++ b/spec/classes/resolv_conf_spec.rb @@ -1,343 +1,345 @@ +# frozen_string_literal: true + require 'spec_helper' on_supported_os.each_value do |f| describe 'resolv_conf' do let(:facts) { { domain: 'example.com' } } let :default_params do { nameservers: ['192.168.0.1', '192.168.1.1', '192.168.2.1'] } end [ { searchpath: 'example.com', nameservers: ['192.168.0.1', '192.168.1.1', '192.168.2.1'], domainname: 'example.com' }, { searchpath: ['example.com', 'example.de'], nameservers: ['192.168.0.1', '192.168.1.1', '192.168.2.1'], domainname: 'example.com', options: ['timeout:2', 'attempts:3'] }, { searchpath: 'example.com', nameservers: ['192.168.0.1', '192.168.1.1', '192.168.2.1'], domainname: 'example.com', options: ['timeout:2', 'attempts:3'] } ].each do |param_set| describe 'when setting searchpath and domainname' do let :param_hash do default_params.merge(param_set) end let :params do param_set end let(:facts) do f.merge(super()) end describe "on #{f[:os]}" do it 'fails to compile' do expect { is_expected.to compile }.to raise_error(%r{domainname and searchpath are mutually exclusive parameters}) end end end end [ { searchpath: 'example.com', nameservers: ['192.168.0.1', '192.168.1.1', '192.168.2.1'] }, { searchpath: ['example.com', 'example.de'], nameservers: ['192.168.0.1', '192.168.1.1', '192.168.2.1'] }, { searchpath: ['example.com', 'example.de', 'example.de'], nameservers: ['192.168.0.1', '192.168.1.1', '192.168.2.1'] }, { searchpath: 'example.com', nameservers: ['192.168.0.1', '192.168.1.1', '192.168.2.1'], options: ['timeout:2', 'attempts:3'] } ].each do |param_set| describe 'when setting searchpath without domainname' do let :param_hash do default_params.merge(param_set) end let :params do param_set end let(:facts) do f.merge(super()) end describe "on #{f[:os]}" do it do is_expected.to contain_file('/etc/resolv.conf').with( 'ensure' => 'file', 'owner' => 'root', 'group' => 0, 'mode' => '0644' ) end it 'compiles the template based on the class parameters' do content = param_value( catalogue, 'file', '/etc/resolv.conf', 'content' ) expected_lines = [] if param_hash[:searchpath].empty? expected_lines.push("domain #{param_hash[:domainname]}") elsif param_hash[:searchpath].is_a?(Array) - expected_lines.push('search ' + param_hash[:searchpath].uniq().join(' ')) + expected_lines.push('search ' + param_hash[:searchpath].uniq.join(' ')) else expected_lines.push("search #{param_hash[:searchpath]}") end param_hash[:nameservers].each do |ns| expected_lines.push("nameserver #{ns}") end if param_hash[:options] && !param_hash[:options].empty? param_hash[:options].each do |option| expected_lines.push("options #{option}") end end (content.split("\n") & expected_lines).should =~ expected_lines end end end end [ { nameservers: ['192.168.0.1', '192.168.1.1', '192.168.2.1'], domainname: 'example.com' }, { nameservers: ['192.168.0.1', '192.168.1.1', '192.168.2.1'], domainname: 'example.com', options: ['timeout:2', 'attempts:3'] } ].each do |param_set| describe 'when setting domainname without searchpath' do let :param_hash do default_params.merge(param_set) end let :params do param_set end let(:facts) do f.merge(super()) end describe "on #{f[:os]}" do it do is_expected.to contain_file('/etc/resolv.conf').with( 'ensure' => 'file', 'owner' => 'root', 'group' => 0, 'mode' => '0644' ) end it 'compiles the template based on the class parameters' do content = param_value( catalogue, 'file', '/etc/resolv.conf', 'content' ) expected_lines = [ "domain #{param_hash[:domainname]}" ] param_hash[:nameservers].each do |ns| expected_lines.push("nameserver #{ns}") end if param_hash[:options] && !param_hash[:options].empty? param_hash[:options].each do |option| expected_lines.push("options #{option}") end end (content.split("\n") & expected_lines).should =~ expected_lines end end end end [ { nameservers: ['192.168.0.1', '192.168.1.1', '192.168.2.1'] }, { nameservers: ['192.168.0.1', '192.168.1.1', '192.168.2.1'], options: ['timeout:2', 'attempts:3'] }, { nameservers: ['192.168.0.1', '192.168.1.1', '192.168.2.1'], options: ['timeout:2', 'attempts:3'] } ].each do |param_set| describe 'when setting neither searchpath nor domainname' do let :param_hash do default_params.merge(param_set) end let :params do param_set end let(:facts) do f.merge(super()) end describe "on #{f[:os]}" do it do is_expected.to contain_file('/etc/resolv.conf').with( 'ensure' => 'file', 'owner' => 'root', 'group' => 0, 'mode' => '0644' ) end it 'compiles the template based on the class parameters' do content = param_value( catalogue, 'file', '/etc/resolv.conf', 'content' ) expected_lines = [ "domain #{facts[:domain]}" ] param_hash[:nameservers].each do |ns| expected_lines.push("nameserver #{ns}") end if param_hash[:options] && !param_hash[:options].empty? param_hash[:options].each do |option| expected_lines.push("options #{option}") end end (content.split("\n") & expected_lines).should =~ expected_lines end end end end [ { nameservers: ['192.168.0.1', '192.168.1.1', '192.168.2.1'], use_resolvconf: true } ].each do |param_set| describe 'when setting neither searchpath nor domainname' do let :param_hash do default_params.merge(param_set) end let :params do param_set end let(:facts) do f.merge(super()) end describe "on #{f[:os]}" do it do is_expected.to contain_file('/etc/resolv.conf').with( 'ensure' => 'link', 'target' => '/run/resolvconf/resolv.conf' ) end it do is_expected.to contain_file('/run/resolvconf/resolv.conf').with( 'ensure' => 'file', 'owner' => 'root', 'group' => 0, 'mode' => '0644' ) end it 'compiles the template based on the class parameters' do content = param_value( catalogue, 'file', '/run/resolvconf/resolv.conf', 'content' ) expected_lines = [ "domain #{facts[:domain]}" ] param_hash[:nameservers].each do |ns| expected_lines.push("nameserver #{ns}") end if param_hash[:options] && !param_hash[:options].empty? param_hash[:options].each do |option| expected_lines.push("options #{option}") end end (content.split("\n") & expected_lines).should =~ expected_lines end end end end [ { nameservers: ['192.168.0.1', '192.168.1.1', '192.168.2.1'], mode: '0444' } ].each do |param_set| describe 'when setting neither searchpath nor domainname' do let :param_hash do default_params.merge(param_set) end let :params do param_set end let(:facts) do f.merge(super()) end describe "on #{f[:os]}" do it do is_expected.to contain_file('/etc/resolv.conf').with( 'ensure' => 'file', 'owner' => 'root', 'group' => 0, 'mode' => '0444' ) end end end end end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index e0c0dfb..99b506d 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,16 +1,18 @@ +# frozen_string_literal: true + require 'puppetlabs_spec_helper/module_spec_helper' if Puppet::Util::Package.versioncmp(Puppet.version, '4.5.0') >= 0 RSpec.configure do |c| c.before do Puppet.settings[:strict] = :error end end end # put local configuration and setup into spec_helper_local begin require 'spec_helper_local' rescue LoadError => loaderror puts "Could not require spec_helper_local: #{loaderror.message}" end diff --git a/spec/spec_helper_local.rb b/spec/spec_helper_local.rb index 9ff7f23..35450f7 100644 --- a/spec/spec_helper_local.rb +++ b/spec/spec_helper_local.rb @@ -1,2 +1,4 @@ +# frozen_string_literal: true + require 'rspec-puppet-facts' include RspecPuppetFacts