From 0b807da215eadc363e9c9f67d5da37c034cf73dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Pinson?= Date: Wed, 13 Mar 2013 11:21:59 +0100 Subject: Fix augeas::lens with new module organization --- spec/spec_helper.rb | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'spec') diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 931d35c..3106389 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -11,6 +11,9 @@ gem 'rspec', '>=2.0.0' require 'rspec/expectations' require 'puppetlabs_spec_helper/module_spec_helper' +require 'rspec-puppet' + +fixture_path = File.expand_path(File.join(__FILE__, '..', 'fixtures')) RSpec.configure do |config| # FIXME REVISIT - We may want to delegate to Facter like we do in @@ -25,4 +28,7 @@ RSpec.configure do |config| Facter.clear Facter.clear_messages end + config.module_path = File.join(fixture_path, 'modules') + config.manifest_dir = File.join(fixture_path, 'manifests') + config.color_enabled = true end -- cgit v1.2.3 From b9de77d2043341a6dd60c91daa26b6434c988f5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Pinson?= Date: Fri, 15 Mar 2013 19:02:04 +0100 Subject: Improve rspec options --- spec/.rspec | 6 ++++++ spec/spec.opts | 6 ------ spec/spec_helper.rb | 1 - 3 files changed, 6 insertions(+), 7 deletions(-) create mode 100644 spec/.rspec delete mode 100644 spec/spec.opts (limited to 'spec') diff --git a/spec/.rspec b/spec/.rspec new file mode 100644 index 0000000..91cd642 --- /dev/null +++ b/spec/.rspec @@ -0,0 +1,6 @@ +--format +s +--colour +--loadby +mtime +--backtrace diff --git a/spec/spec.opts b/spec/spec.opts deleted file mode 100644 index 91cd642..0000000 --- a/spec/spec.opts +++ /dev/null @@ -1,6 +0,0 @@ ---format -s ---colour ---loadby -mtime ---backtrace diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 3106389..d63accd 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -30,5 +30,4 @@ RSpec.configure do |config| end config.module_path = File.join(fixture_path, 'modules') config.manifest_dir = File.join(fixture_path, 'manifests') - config.color_enabled = true end -- cgit v1.2.3 From a534f53b803ba46dd7ea2b55312949af688f850b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Pinson?= Date: Fri, 15 Mar 2013 20:39:16 +0100 Subject: Add specs for hosts --- spec/fixtures/manifests/site.pp | 23 ++++++++ spec/hosts/simple_debian_squeeze_spec.rb | 91 ++++++++++++++++++++++++++++++++ spec/hosts/simple_debian_wheezy_spec.rb | 91 ++++++++++++++++++++++++++++++++ spec/hosts/simple_redhat_spec.rb | 82 ++++++++++++++++++++++++++++ spec/hosts/with_lens_noaugeas_spec.rb | 9 ++++ spec/hosts/with_lens_spec.rb | 64 ++++++++++++++++++++++ spec/hosts/wrong_os_spec.rb | 11 ++++ 7 files changed, 371 insertions(+) create mode 100644 spec/fixtures/manifests/site.pp create mode 100644 spec/hosts/simple_debian_squeeze_spec.rb create mode 100644 spec/hosts/simple_debian_wheezy_spec.rb create mode 100644 spec/hosts/simple_redhat_spec.rb create mode 100644 spec/hosts/with_lens_noaugeas_spec.rb create mode 100644 spec/hosts/with_lens_spec.rb create mode 100644 spec/hosts/wrong_os_spec.rb (limited to 'spec') diff --git a/spec/fixtures/manifests/site.pp b/spec/fixtures/manifests/site.pp new file mode 100644 index 0000000..fb803e5 --- /dev/null +++ b/spec/fixtures/manifests/site.pp @@ -0,0 +1,23 @@ +# simple_* and wrong_os tests +node default { + class { '::augeas': + version => $::augeas_version, + ruby_version => $::augeas_ruby_version, + lens_dir => $::augeas_lens_dir, + } +} + +node 'with_lens_noaugeas' { + ::augeas::lens { 'foo': + lens_source => '/tmp/foo.aug', + } +} + +node 'with_lens' { + include ::augeas + ::augeas::lens { 'foo': + lens_source => $::augeas_lens_source, + test_source => $::augeas_test_source, + stock_since => $::augeas_stock_since, + } +} diff --git a/spec/hosts/simple_debian_squeeze_spec.rb b/spec/hosts/simple_debian_squeeze_spec.rb new file mode 100644 index 0000000..4b41105 --- /dev/null +++ b/spec/hosts/simple_debian_squeeze_spec.rb @@ -0,0 +1,91 @@ +require 'spec_helper' + +describe 'simple_debian_squeeze' do + let (:facts) { { + :osfamily => 'Debian', + :lsbdistcodename => 'squeeze', + } } + + context 'when versions are not specified' do + it { should contain_package('libaugeas0').with( + :ensure => 'present' + ) } + it { should contain_package('augeas-tools').with( + :ensure => 'present' + ) } + it { should contain_package('augeas-lenses').with( + :ensure => 'present' + ) } + it { should contain_package('ruby-augeas').with( + :ensure => 'present', + :name => 'libaugeas-ruby1.8' + ) } + end + + context 'when versions are specified' do + let (:facts) { { + :osfamily => 'Debian', + :lsbdistcodename => 'squeeze', + :augeas_version => '1.2.3', + :augeas_ruby_version => '3.2.1', + } } + + it { should contain_package('libaugeas0').with( + :ensure => '1.2.3' + ) } + it { should contain_package('augeas-tools').with( + :ensure => '1.2.3' + ) } + it { should contain_package('augeas-lenses').with( + :ensure => '1.2.3' + ) } + it { should contain_package('ruby-augeas').with( + :ensure => '3.2.1', + :name => 'libaugeas-ruby1.8' + ) } + end + + context 'with standard lens_dir' do + it { should contain_file('/usr/share/augeas/lenses').with( + :ensure => 'directory', + :purge => 'true', + :force => 'true', + :recurse => 'true', + :recurselimit => 1 + ) } + it { should contain_file('/usr/share/augeas/lenses/dist').with( + :ensure => 'directory', + :purge => 'false' + ) } + it { should contain_file('/usr/share/augeas/lenses/tests').with( + :ensure => 'directory', + :purge => 'true', + :force => 'true' + ).without(:recurse) } + end + + context 'with a non standard lens_dir' do + let (:facts) { { + :osfamily => 'Debian', + :lsbdistcodename => 'squeeze', + :augeas_lens_dir => '/opt/augeas/lenses' + } } + + it { should contain_file('/opt/augeas/lenses').with( + :ensure => 'directory', + :purge => 'true', + :force => 'true', + :recurse => 'true', + :recurselimit => 1 + ) } + it { should contain_file('/opt/augeas/lenses/dist').with( + :ensure => 'directory', + :purge => 'false' + ) } + it { should contain_file('/opt/augeas/lenses/tests').with( + :ensure => 'directory', + :purge => 'true', + :force => 'true' + ).without(:recurse) } + end +end diff --git a/spec/hosts/simple_debian_wheezy_spec.rb b/spec/hosts/simple_debian_wheezy_spec.rb new file mode 100644 index 0000000..23c0d1d --- /dev/null +++ b/spec/hosts/simple_debian_wheezy_spec.rb @@ -0,0 +1,91 @@ +require 'spec_helper' + +describe 'simple_debian_squeeze' do + let (:facts) { { + :osfamily => 'Debian', + :lsbdistcodename => 'wheezy', + } } + + context 'when versions are not specified' do + it { should contain_package('libaugeas0').with( + :ensure => 'present' + ) } + it { should contain_package('augeas-tools').with( + :ensure => 'present' + ) } + it { should contain_package('augeas-lenses').with( + :ensure => 'present' + ) } + it { should contain_package('ruby-augeas').with( + :ensure => 'present', + :name => 'libaugeas-ruby1.9.1' + ) } + end + + context 'when versions are specified' do + let (:facts) { { + :osfamily => 'Debian', + :lsbdistcodename => 'wheezy', + :augeas_version => '1.2.3', + :augeas_ruby_version => '3.2.1', + } } + + it { should contain_package('libaugeas0').with( + :ensure => '1.2.3' + ) } + it { should contain_package('augeas-tools').with( + :ensure => '1.2.3' + ) } + it { should contain_package('augeas-lenses').with( + :ensure => '1.2.3' + ) } + it { should contain_package('ruby-augeas').with( + :ensure => '3.2.1', + :name => 'libaugeas-ruby1.9.1' + ) } + end + + context 'with standard lens_dir' do + it { should contain_file('/usr/share/augeas/lenses').with( + :ensure => 'directory', + :purge => 'true', + :force => 'true', + :recurse => 'true', + :recurselimit => 1 + ) } + it { should contain_file('/usr/share/augeas/lenses/dist').with( + :ensure => 'directory', + :purge => 'false' + ) } + it { should contain_file('/usr/share/augeas/lenses/tests').with( + :ensure => 'directory', + :purge => 'true', + :force => 'true' + ).without(:recurse) } + end + + context 'with a non standard lens_dir' do + let (:facts) { { + :osfamily => 'Debian', + :lsbdistcodename => 'wheezy', + :augeas_lens_dir => '/opt/augeas/lenses' + } } + + it { should contain_file('/opt/augeas/lenses').with( + :ensure => 'directory', + :purge => 'true', + :force => 'true', + :recurse => 'true', + :recurselimit => 1 + ) } + it { should contain_file('/opt/augeas/lenses/dist').with( + :ensure => 'directory', + :purge => 'false' + ) } + it { should contain_file('/opt/augeas/lenses/tests').with( + :ensure => 'directory', + :purge => 'true', + :force => 'true' + ).without(:recurse) } + end +end diff --git a/spec/hosts/simple_redhat_spec.rb b/spec/hosts/simple_redhat_spec.rb new file mode 100644 index 0000000..5045377 --- /dev/null +++ b/spec/hosts/simple_redhat_spec.rb @@ -0,0 +1,82 @@ +require 'spec_helper' + +describe 'simple_redhat' do + let (:facts) { { + :osfamily => 'RedHat', + } } + + context 'when versions are not specified' do + it { should contain_package('augeas').with( + :ensure => 'present' + ) } + it { should contain_package('augeas-libs').with( + :ensure => 'present' + ) } + it { should contain_package('ruby-augeas').with( + :ensure => 'present', + :name => 'ruby-augeas' + ) } + end + + context 'when versions are specified' do + let (:facts) { { + :osfamily => 'RedHat', + :augeas_version => '1.2.3', + :augeas_ruby_version => '3.2.1', + } } + + it { should contain_package('augeas').with( + :ensure => '1.2.3' + ) } + it { should contain_package('augeas-libs').with( + :ensure => '1.2.3' + ) } + it { should contain_package('ruby-augeas').with( + :ensure => '3.2.1', + :name => 'ruby-augeas' + ) } + end + + context 'with standard lens_dir' do + it { should contain_file('/usr/share/augeas/lenses').with( + :ensure => 'directory', + :purge => 'true', + :force => 'true', + :recurse => 'true', + :recurselimit => 1 + ) } + it { should contain_file('/usr/share/augeas/lenses/dist').with( + :ensure => 'directory', + :purge => 'false' + ) } + it { should contain_file('/usr/share/augeas/lenses/tests').with( + :ensure => 'directory', + :purge => 'true', + :force => 'true' + ).without(:recurse) } + end + + context 'with a non standard lens_dir' do + let (:facts) { { + :osfamily => 'RedHat', + :augeas_lens_dir => '/opt/augeas/lenses' + } } + + it { should contain_file('/opt/augeas/lenses').with( + :ensure => 'directory', + :purge => 'true', + :force => 'true', + :recurse => 'true', + :recurselimit => 1 + ) } + it { should contain_file('/opt/augeas/lenses/dist').with( + :ensure => 'directory', + :purge => 'false' + ) } + it { should contain_file('/opt/augeas/lenses/tests').with( + :ensure => 'directory', + :purge => 'true', + :force => 'true' + ).without(:recurse) } + end +end diff --git a/spec/hosts/with_lens_noaugeas_spec.rb b/spec/hosts/with_lens_noaugeas_spec.rb new file mode 100644 index 0000000..b26563b --- /dev/null +++ b/spec/hosts/with_lens_noaugeas_spec.rb @@ -0,0 +1,9 @@ +require 'spec_helper' + +describe 'with_lens_noaugeas' do + it 'should error' do + expect { + should contain_file('/usr/share/augeas/lenses/foo.aug') + }.to raise_error(Puppet::Error, /You must declare the augeas class/) + end +end diff --git a/spec/hosts/with_lens_spec.rb b/spec/hosts/with_lens_spec.rb new file mode 100644 index 0000000..125d786 --- /dev/null +++ b/spec/hosts/with_lens_spec.rb @@ -0,0 +1,64 @@ +require 'spec_helper' + +describe 'with_lens' do + let (:facts) { { + :osfamily => 'RedHat', + } } + + context 'when no lens_source is passed' do + it 'should error' do + expect { + should contain_file('/usr/share/augeas/lenses/foo.aug') + }.to raise_error(Puppet::Error, /Must pass lens_source/) + end + end + + context 'when lens_source is passed' do + let (:facts) { { + :osfamily => 'RedHat', + :augeas_lens_source => '/tmp/foo.aug', + } } + + it { should contain_file('/usr/share/augeas/lenses/foo.aug') } + it { should contain_exec('Typecheck lens foo') } + it { should_not contain_file('/usr/share/augeas/lenses/tests/test_foo.aug') } + it { should_not contain_exec('Test lens foo') } + end + + context 'when lens_source and test_source are passed' do + let (:facts) { { + :osfamily => 'RedHat', + :augeas_lens_source => '/tmp/foo.aug', + :augeas_test_source => '/tmp/test_foo.aug', + } } + + it { should contain_file('/usr/share/augeas/lenses/foo.aug') } + it { should contain_exec('Typecheck lens foo') } + it { should contain_file('/usr/share/augeas/lenses/tests/test_foo.aug') } + it { should contain_exec('Test lens foo') } + end + + context 'when stock_since is passed and augeas is older' do + let (:facts) { { + :osfamily => 'RedHat', + :augeas_lens_source => '/tmp/foo.aug', + :augeas_stock_since => '1.2.3', + :augeasversion => '1.0.0', + } } + + it { should contain_file('/usr/share/augeas/lenses/foo.aug') } + it { should contain_exec('Typecheck lens foo') } + end + + context 'when stock_since is passed and augeas is newer' do + let (:facts) { { + :osfamily => 'RedHat', + :augeas_lens_source => '/tmp/foo.aug', + :augeas_stock_since => '1.2.3', + :augeasversion => '1.5.0', + } } + + it { should_not contain_file('/usr/share/augeas/lenses/foo.aug') } + it { should_not contain_exec('Typecheck lens foo') } + end +end diff --git a/spec/hosts/wrong_os_spec.rb b/spec/hosts/wrong_os_spec.rb new file mode 100644 index 0000000..5704ded --- /dev/null +++ b/spec/hosts/wrong_os_spec.rb @@ -0,0 +1,11 @@ +require 'spec_helper' + +describe 'wrong_os' do + let (:facts) { { + :osfamily => 'MS-DOS' + } } + + it 'should fail' do + expect { should contain_package('ruby-augeas') }.to raise_error(Puppet::Error, /Unsupported OS family/) + end +end -- cgit v1.2.3 From d51dc4b3501e60c4480659a234884a14eabd7696 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Pinson?= Date: Fri, 15 Mar 2013 20:49:03 +0100 Subject: Simplify spec_helper --- spec/spec_helper.rb | 35 ++++++++--------------------------- 1 file changed, 8 insertions(+), 27 deletions(-) (limited to 'spec') diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index d63accd..5e28e1f 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,33 +1,14 @@ -dir = File.expand_path(File.dirname(__FILE__)) -$LOAD_PATH.unshift File.join(dir, 'lib') - -# Don't want puppet getting the command line arguments for rake or autotest -ARGV.clear - -require 'puppet' -require 'facter' require 'mocha' -gem 'rspec', '>=2.0.0' -require 'rspec/expectations' - -require 'puppetlabs_spec_helper/module_spec_helper' require 'rspec-puppet' fixture_path = File.expand_path(File.join(__FILE__, '..', 'fixtures')) -RSpec.configure do |config| - # FIXME REVISIT - We may want to delegate to Facter like we do in - # Puppet::PuppetSpecInitializer.initialize_via_testhelper(config) because - # this behavior is a duplication of the spec_helper in Facter. - config.before :each do - # Ensure that we don't accidentally cache facts and environment between - # test cases. This requires each example group to explicitly load the - # facts being exercised with something like - # Facter.collection.loader.load(:ipaddress) - Facter::Util::Loader.any_instance.stubs(:load_all) - Facter.clear - Facter.clear_messages - end - config.module_path = File.join(fixture_path, 'modules') - config.manifest_dir = File.join(fixture_path, 'manifests') +RSpec.configure do |c| + c.module_path = File.join(fixture_path, 'modules') + c.manifest_dir = File.join(fixture_path, 'manifests') end + + +dir = File.expand_path(File.dirname(__FILE__)) +$LOAD_PATH.unshift File.join(dir, 'lib') + -- cgit v1.2.3 From a7c41208cc4a6e9b543487bf606b551307fdc05a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Pinson?= Date: Fri, 15 Mar 2013 21:53:17 +0100 Subject: Add spec/defines/augeas_lens_spec.rb --- spec/defines/augeas_lens_spec.rb | 68 ++++++++++++++++++++++++++++++++++++++++ spec/hosts/with_lens_spec.rb | 8 ----- 2 files changed, 68 insertions(+), 8 deletions(-) create mode 100644 spec/defines/augeas_lens_spec.rb (limited to 'spec') diff --git a/spec/defines/augeas_lens_spec.rb b/spec/defines/augeas_lens_spec.rb new file mode 100644 index 0000000..57d30b6 --- /dev/null +++ b/spec/defines/augeas_lens_spec.rb @@ -0,0 +1,68 @@ +require 'spec_helper' + +describe 'augeas::lens' do + let (:title) { 'foo' } + let (:facts) { { + :osfamily => 'RedHat', + } } + context 'when no lens_source is passed' do + it 'should error' do + expect { + should contain_file('/usr/share/augeas/lenses/foo.aug') + }.to raise_error(Puppet::Error, /Must pass lens_source/) + end + end + + context 'when lens_source is passed' do + let (:params) { { + :lens_source => '/tmp/foo.aug', + } } + + it { should contain_file('/usr/share/augeas/lenses/foo.aug') } + it { should contain_exec('Typecheck lens foo') } + it { should_not contain_file('/usr/share/augeas/lenses/tests/test_foo.aug') } + it { should_not contain_exec('Test lens foo') } + end + + context 'when lens_source and test_source are passed' do + let (:params) { { + :lens_source => '/tmp/foo.aug', + :test_source => '/tmp/test_foo.aug', + } } + + it { should contain_file('/usr/share/augeas/lenses/foo.aug') } + it { should contain_exec('Typecheck lens foo') } + it { should contain_file('/usr/share/augeas/lenses/tests/test_foo.aug') } + it { should contain_exec('Test lens foo') } + end + + context 'when stock_since is passed and augeas is older' do + let (:params) { { + :lens_source => '/tmp/foo.aug', + :stock_since => '1.2.3', + } } + + let (:facts) { { + :osfamily => 'RedHat', + :augeasversion => '1.0.0', + } } + + it { should contain_file('/usr/share/augeas/lenses/foo.aug') } + it { should contain_exec('Typecheck lens foo') } + end + + context 'when stock_since is passed and augeas is newer' do + let (:params) { { + :lens_source => '/tmp/foo.aug', + :stock_since => '1.2.3', + } } + + let (:facts) { { + :osfamily => 'RedHat', + :augeasversion => '1.5.0', + } } + + it { should_not contain_file('/usr/share/augeas/lenses/foo.aug') } + it { should_not contain_exec('Typecheck lens foo') } + end +end diff --git a/spec/hosts/with_lens_spec.rb b/spec/hosts/with_lens_spec.rb index 125d786..d7a5249 100644 --- a/spec/hosts/with_lens_spec.rb +++ b/spec/hosts/with_lens_spec.rb @@ -5,14 +5,6 @@ describe 'with_lens' do :osfamily => 'RedHat', } } - context 'when no lens_source is passed' do - it 'should error' do - expect { - should contain_file('/usr/share/augeas/lenses/foo.aug') - }.to raise_error(Puppet::Error, /Must pass lens_source/) - end - end - context 'when lens_source is passed' do let (:facts) { { :osfamily => 'RedHat', -- cgit v1.2.3