diff --git a/Gemfile b/Gemfile index c6b628c..4860141 100644 --- a/Gemfile +++ b/Gemfile @@ -1,77 +1,76 @@ 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 'puppetlabs_spec_helper', '>= 2.11.0', :require => false gem 'rspec-puppet-facts', :require => false gem 'rspec-puppet-utils', :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 'puppet-lint-absolute_classname-check', '>= 2.0.0', :require => false gem 'puppet-lint-topscope-variable-check', :require => false gem 'puppet-lint-legacy_facts-check', :require => false gem 'puppet-lint-anchor-check', :require => false gem 'metadata-json-lint', :require => false gem 'rubocop', '~> 0.49.1', :require => false gem 'rubocop-rspec', :require => false gem 'coveralls', :require => false gem 'simplecov-console', :require => false gem 'parallel_tests', :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) else gem 'beaker', '>= 4.2.0', :require => false 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-hostgenerator', '>= 1.1.22', :require => false gem 'beaker-docker', :require => false gem 'beaker-puppet', :require => false gem 'beaker-puppet_install_helper', :require => false gem 'beaker-module_install_helper', :require => false end group :release do gem 'puppet-blacksmith', :require => false gem 'voxpupuli-release', :require => false gem 'puppet-strings', '>= 2.2', :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 = '~> 6.0' : puppetversion = ENV['PUPPET_VERSION'].to_s gem 'puppet', puppetversion, :require => false, :groups => [:test] # vim: syntax=ruby diff --git a/spec/classes/timezone_spec.rb b/spec/classes/timezone_spec.rb index 34d116c..b7a5d1b 100644 --- a/spec/classes/timezone_spec.rb +++ b/spec/classes/timezone_spec.rb @@ -1,95 +1,152 @@ require 'spec_helper' describe 'timezone', type: :class do on_supported_os.each do |os, facts| context "on #{os}" do let(:params) { {} } let(:facts) do facts end it { is_expected.to compile.with_all_deps } it { is_expected.to create_class('timezone') } case facts[:os]['family'] when 'Debian' context 'when using default class parameters' do it { is_expected.to contain_file('/etc/timezone') } it { is_expected.to contain_file('/etc/timezone').with_ensure('file') } it { is_expected.to contain_file('/etc/timezone').with_content(%r{Etc/UTC}) } it { is_expected.to contain_exec('update_timezone').with_command(%r{^dpkg-reconfigure -f noninteractive tzdata$}) } it { is_expected.to contain_package('tzdata').with(ensure: 'present', before: 'File[/etc/localtime]') } it { is_expected.to contain_file('/etc/localtime').with(ensure: 'link', target: '/usr/share/zoneinfo/Etc/UTC') } end context 'when timezone => "Europe/Berlin"' do let(:params) { { timezone: 'Europe/Berlin' } } it { is_expected.to contain_file('/etc/timezone').with_content(%r{^Europe/Berlin$}) } it { is_expected.to contain_file('/etc/localtime').with_target('/usr/share/zoneinfo/Europe/Berlin') } end context 'when autoupgrade => true' do let(:params) { { autoupgrade: true } } it { is_expected.to contain_package('tzdata').with_ensure('latest') } end context 'when ensure => absent' do let(:params) { { ensure: 'absent' } } it { is_expected.to contain_package('tzdata').with_ensure('present') } it { is_expected.to contain_file('/etc/timezone').with_ensure('absent') } it { is_expected.to contain_file('/etc/localtime').with_ensure('absent') } end when 'RedHat' case facts[:os]['release']['major'] when '6' context 'redhat/centos 6' do context 'when using default class parameters' do it { is_expected.to contain_package('tzdata').with(ensure: 'present', before: 'File[/etc/localtime]') } it { is_expected.to contain_file('/etc/sysconfig/clock').with_ensure('file') } it { is_expected.to contain_file('/etc/sysconfig/clock').with_content(%r{^ZONE="Etc/UTC"$}) } it { is_expected.not_to contain_exec('update_timezone') } it { is_expected.to contain_file('/etc/localtime').with(ensure: 'link', target: '/usr/share/zoneinfo/Etc/UTC') } end context 'when timezone => "Europe/Berlin"' do let(:params) { { timezone: 'Europe/Berlin' } } it { is_expected.to contain_file('/etc/sysconfig/clock').with_content(%r{^ZONE="Europe/Berlin"$}) } it { is_expected.to contain_file('/etc/localtime').with_target('/usr/share/zoneinfo/Europe/Berlin') } end context 'when autoupgrade => true' do let(:params) { { autoupgrade: true } } it { is_expected.to contain_package('tzdata').with_ensure('latest') } end context 'when ensure => absent' do let(:params) { { ensure: 'absent' } } it { is_expected.to contain_package('tzdata').with_ensure('present') } it { is_expected.to contain_file('/etc/sysconfig/clock').with_ensure('absent') } it { is_expected.to contain_file('/etc/localtime').with_ensure('absent') } end end when '7', '8' context 'redhat/centos 7, 8' do it { is_expected.not_to contain_file('/etc/sysconfig/clock') } it { is_expected.to contain_file('/etc/localtime').with_ensure('link') } it { is_expected.to contain_exec('update_timezone').with_command('timedatectl set-timezone Etc/UTC').with_unless('timedatectl status | grep "Timezone:\|Time zone:" | grep -q Etc/UTC') } end end # end RedHat version + + when 'Gentoo' + + context 'when using default class parameters' do + it { is_expected.to contain_package('sys-libs/timezone-data').with(ensure: 'present', before: 'File[/etc/localtime]') } + + it { is_expected.to contain_file('/etc/timezone').with_ensure('file') } + it { is_expected.to contain_file('/etc/timezone').with_content(%r{^Etc/UTC$}) } + it { is_expected.to contain_exec('update_timezone').with_command(%r{^emerge --config timezone-data$}) } + it { is_expected.to contain_file('/etc/localtime').with(ensure: 'link', target: '/usr/share/zoneinfo/Etc/UTC') } + end + + context 'when timezone => "Europe/Berlin"' do + let(:params) { { timezone: 'Europe/Berlin' } } + + it { is_expected.to contain_file('/etc/timezone').with_content(%r{^Europe/Berlin$}) } + it { is_expected.to contain_file('/etc/localtime').with_target('/usr/share/zoneinfo/Europe/Berlin') } + end + + context 'when autoupgrade => true' do + let(:params) { { autoupgrade: true } } + + it { is_expected.to contain_package('sys-libs/timezone-data').with_ensure('latest') } + end + + context 'when ensure => absent' do + let(:params) { { ensure: 'absent' } } + + it { is_expected.to contain_package('sys-libs/timezone-data').with_ensure('present') } + it { is_expected.to contain_file('/etc/timezone').with_ensure('absent') } + it { is_expected.to contain_file('/etc/localtime').with_ensure('absent') } + end + + when 'Freebsd' + + context 'when using default class parameters' do + it { is_expected.to contain_file('/etc/localtime').with(ensure: 'link', target: '/usr/share/zoneinfo/Etc/UTC') } + end + + context 'when timezone => "Europe/Berlin"' do + let(:params) { { timezone: 'Europe/Berlin' } } + + it { is_expected.to contain_file('/etc/localtime').with_target('/usr/share/zoneinfo/Europe/Berlin') } + end + + context 'when autoupgrade => true' do + let(:params) { { autoupgrade: true } } + + it { is_expected.to compile.with_all_deps } + end + + context 'when ensure => absent' do + let(:params) { { ensure: 'absent' } } + + it { is_expected.to contain_file('/etc/localtime').with_ensure('absent') } + end + else - pending "There are no tests for #{os}" + pending "There are no tests for #{os} (#{facts[:os]['family']})" end # end OS Family end end end diff --git a/spec/support/freebsd.rb b/spec/support/freebsd.rb deleted file mode 100644 index 63a7805..0000000 --- a/spec/support/freebsd.rb +++ /dev/null @@ -1,39 +0,0 @@ -shared_examples 'FreeBSD' do - let(:facts) do - { - os: { - family: 'FreeBSD', - release: { major: '9' } - } - } - end - - describe 'when using default class parameters' do - let(:params) { {} } - - it { is_expected.to create_class('timezone') } - - it do - is_expected.to contain_file('/etc/localtime').with(ensure: 'link', - target: '/usr/share/zoneinfo/Etc/UTC') - end - - context 'when timezone => "Europe/Berlin"' do - let(:params) { { timezone: 'Europe/Berlin' } } - - it { is_expected.to contain_file('/etc/localtime').with_target('/usr/share/zoneinfo/Europe/Berlin') } - end - - context 'when autoupgrade => true' do - let(:params) { { autoupgrade: true } } - - it { is_expected.to compile.with_all_deps } - end - - context 'when ensure => absent' do - let(:params) { { ensure: 'absent' } } - - it { is_expected.to contain_file('/etc/localtime').with_ensure('absent') } - end - end -end diff --git a/spec/support/gentoo.rb b/spec/support/gentoo.rb deleted file mode 100644 index 779ee1f..0000000 --- a/spec/support/gentoo.rb +++ /dev/null @@ -1,53 +0,0 @@ -shared_examples 'Gentoo' do - let(:facts) do - { - os: { - family: 'Gentoo', - release: { - full: '4.8.0', - major: '4' - } - } - } - end - - describe 'when using default class parameters' do - let(:params) { {} } - - it { is_expected.to create_class('timezone') } - - it do - is_expected.to contain_package('sys-libs/timezone-data').with(ensure: 'present', - before: 'File[/etc/localtime]') - end - - it { is_expected.to contain_file('/etc/timezone').with_ensure('file') } - it { is_expected.to contain_file('/etc/timezone').with_content(%r{^Etc/UTC$}) } - it { is_expected.to contain_exec('update_timezone').with_command(%r{^emerge --config timezone-data$}) } - it do - is_expected.to contain_file('/etc/localtime').with(ensure: 'link', - target: '/usr/share/zoneinfo/Etc/UTC') - end - - context 'when timezone => "Europe/Berlin"' do - let(:params) { { timezone: 'Europe/Berlin' } } - - it { is_expected.to contain_file('/etc/timezone').with_content(%r{^Europe/Berlin$}) } - it { is_expected.to contain_file('/etc/localtime').with_target('/usr/share/zoneinfo/Europe/Berlin') } - end - - context 'when autoupgrade => true' do - let(:params) { { autoupgrade: true } } - - it { is_expected.to contain_package('sys-libs/timezone-data').with_ensure('latest') } - end - - context 'when ensure => absent' do - let(:params) { { ensure: 'absent' } } - - it { is_expected.to contain_package('sys-libs/timezone-data').with_ensure('present') } - it { is_expected.to contain_file('/etc/timezone').with_ensure('absent') } - it { is_expected.to contain_file('/etc/localtime').with_ensure('absent') } - end - end -end