diff --git a/Gemfile b/Gemfile index a9e0734a4..242b8650a 100644 --- a/Gemfile +++ b/Gemfile @@ -19,13 +19,18 @@ group :development, :unit_tests do gem 'simplecov', :require => false gem 'puppet_facts', :require => false gem 'json', :require => false + gem 'pry', :require => false end +beaker_version = ENV['BEAKER_VERSION'] beaker_rspec_version = ENV['BEAKER_RSPEC_VERSION'] group :system_tests do + if beaker_version + gem 'beaker', *location_for(beaker_version) + end if beaker_rspec_version gem 'beaker-rspec', *location_for(beaker_rspec_version) - else + else gem 'beaker-rspec', :require => false end gem 'serverspec', :require => false diff --git a/spec/acceptance/ini_setting_spec.rb b/spec/acceptance/ini_setting_spec.rb index 4e5898506..26bdf759b 100644 --- a/spec/acceptance/ini_setting_spec.rb +++ b/spec/acceptance/ini_setting_spec.rb @@ -4,16 +4,16 @@ describe 'ini_setting resource' do after :all do - shell("rm #{tmpdir}/*.ini", :acceptable_exit_codes => [0,1,2]) + shell("rm #{tmpdir}/*.ini", :acceptable_exit_codes => [0, 1, 2]) end - shared_examples 'has_content' do |path,pp,content| + shared_examples 'has_content' do |path, pp, content| before :all do - shell("rm #{path}", :acceptable_exit_codes => [0,1,2]) + shell("rm #{path}", :acceptable_exit_codes => [0, 1, 2]) end after :all do - shell("cat #{path}", :acceptable_exit_codes => [0,1,2]) - shell("rm #{path}", :acceptable_exit_codes => [0,1,2]) + shell("cat #{path}", :acceptable_exit_codes => [0, 1, 2]) + shell("rm #{path}", :acceptable_exit_codes => [0, 1, 2]) end it 'applies the manifest twice' do @@ -23,20 +23,17 @@ describe file(path) do it { should be_file } - #XXX Solaris 10 doesn't support multi-line grep - it("should contain #{content}", :unless => fact('osfamily') == 'Solaris') { - should contain(content) - } + its(:content) { should match content } end end - shared_examples 'has_error' do |path,pp,error| + shared_examples 'has_error' do |path, pp, error| before :all do - shell("rm #{path}", :acceptable_exit_codes => [0,1,2]) + shell("rm #{path}", :acceptable_exit_codes => [0, 1, 2]) end after :all do - shell("cat #{path}", :acceptable_exit_codes => [0,1,2]) - shell("rm #{path}", :acceptable_exit_codes => [0,1,2]) + shell("cat #{path}", :acceptable_exit_codes => [0, 1, 2]) + shell("rm #{path}", :acceptable_exit_codes => [0, 1, 2]) end it 'applies the manifest and gets a failure message' do @@ -72,13 +69,13 @@ apply_manifest(pp, :catch_changes => true) end - it_behaves_like 'has_content', "#{tmpdir}/ini_setting.ini", pp, "four = five\n[one]\ntwo = three" + it_behaves_like 'has_content', "#{tmpdir}/ini_setting.ini", pp, /four = five\n\n\[one\]\ntwo = three/ end context '=> absent for key/value' do before :all do if fact('osfamily') == 'Darwin' - shell("echo \"four = five\n[one]\ntwo = three\" > #{tmpdir}/ini_setting.ini") + shell("echo \"four = five[one]\ntwo = three\" > #{tmpdir}/ini_setting.ini") else shell("echo -e \"four = five\n[one]\ntwo = three\" > #{tmpdir}/ini_setting.ini") end @@ -96,14 +93,16 @@ it 'applies the manifest twice' do apply_manifest(pp, :catch_failures => true) - apply_manifest(pp, :catch_changes => true) + apply_manifest(pp, :catch_changes => true) end describe file("#{tmpdir}/ini_setting.ini") do it { should be_file } - it { should contain('four = five') } - it { should contain('[one]') } - it { should_not contain('two = three') } + its(:content) { + should match /four = five/ + should match /\[one\]/ + should_not match /two = three/ + } end end @@ -116,8 +115,8 @@ end end after :all do - shell("cat #{tmpdir}/ini_setting.ini", :acceptable_exit_codes => [0,1,2]) - shell("rm #{tmpdir}/ini_setting.ini", :acceptable_exit_codes => [0,1,2]) + shell("cat #{tmpdir}/ini_setting.ini", :acceptable_exit_codes => [0, 1, 2]) + shell("rm #{tmpdir}/ini_setting.ini", :acceptable_exit_codes => [0, 1, 2]) end pp = <<-EOS @@ -132,23 +131,25 @@ it 'applies the manifest twice' do apply_manifest(pp, :catch_failures => true) - apply_manifest(pp, :catch_changes => true) + apply_manifest(pp, :catch_changes => true) end describe file("#{tmpdir}/ini_setting.ini") do it { should be_file } - it { should_not contain('four = five') } - it { should contain('[one]') } - it { should contain('two = three') } + its(:content) { + should_not match /four = five/ + should match /\[one\]/ + should match /two = three/ + } end end end describe 'section, setting, value parameters' do { - "section => 'test', setting => 'foo', value => 'bar'," => "[test]\nfoo = bar", - "section => 'more', setting => 'baz', value => 'quux'," => "[more]\nbaz = quux", - "section => '', setting => 'top', value => 'level'," => "top = level", + "section => 'test', setting => 'foo', value => 'bar'," => /\[test\]\nfoo = bar/, + "section => 'more', setting => 'baz', value => 'quux'," => /\[more\]\nbaz = quux/, + "section => '', setting => 'top', value => 'level'," => /top = level/, }.each do |parameter_list, content| context parameter_list do pp = <<-EOS @@ -164,12 +165,12 @@ end { - "section => 'test'," => /setting is a required.+value is a required/, - "setting => 'foo', value => 'bar'," => /section is a required/, - "section => 'test', setting => 'foo'," => /value is a required/, - "section => 'test', value => 'bar'," => /setting is a required/, - "value => 'bar'," => /section is a required.+setting is a required/, - "setting => 'foo'," => /section is a required.+value is a required/, + "section => 'test'," => /setting is a required.+value is a required/, + "setting => 'foo', value => 'bar'," => /section is a required/, + "section => 'test', setting => 'foo'," => /value is a required/, + "section => 'test', value => 'bar'," => /setting is a required/, + "value => 'bar'," => /section is a required.+setting is a required/, + "setting => 'foo'," => /section is a required.+value is a required/, }.each do |parameter_list, error| context parameter_list, :pending => 'no error checking yet' do pp = <<-EOS @@ -187,9 +188,9 @@ describe 'path parameter' do [ - "#{tmpdir}/one.ini", - "#{tmpdir}/two.ini", - "#{tmpdir}/three.ini", + "#{tmpdir}/one.ini", + "#{tmpdir}/two.ini", + "#{tmpdir}/three.ini", ].each do |path| context "path => #{path}" do pp = <<-EOS @@ -202,7 +203,7 @@ } EOS - it_behaves_like 'has_content', path, pp, "[one]\ntwo = three" + it_behaves_like 'has_content', path, pp, /\[one\]\ntwo = three/ end end @@ -223,9 +224,9 @@ describe 'key_val_separator parameter' do { - "" => "two = three", - "key_val_separator => '='," => "two=three", - "key_val_separator => ' = '," => "two = three", + "" => /two = three/, + "key_val_separator => '='," => /two=three/, + "key_val_separator => ' = '," => /two = three/, }.each do |parameter, content| context "with \"#{parameter}\" makes \"#{content}\"" do pp = <<-EOS diff --git a/spec/acceptance/ini_subsetting_spec.rb b/spec/acceptance/ini_subsetting_spec.rb index b801833ad..e26c95977 100644 --- a/spec/acceptance/ini_subsetting_spec.rb +++ b/spec/acceptance/ini_subsetting_spec.rb @@ -4,36 +4,38 @@ describe 'ini_subsetting resource' do after :all do - shell("rm #{tmpdir}/*.ini", :acceptable_exit_codes => [0,1,2]) + shell("rm #{tmpdir}/*.ini", :acceptable_exit_codes => [0, 1, 2]) end - shared_examples 'has_content' do |path,pp,content| + shared_examples 'has_content' do |path, pp, content| before :all do - shell("rm #{path}", :acceptable_exit_codes => [0,1,2]) + shell("rm #{path}", :acceptable_exit_codes => [0, 1, 2]) end after :all do - shell("cat #{path}", :acceptable_exit_codes => [0,1,2]) - shell("rm #{path}", :acceptable_exit_codes => [0,1,2]) + shell("cat #{path}", :acceptable_exit_codes => [0, 1, 2]) + shell("rm #{path}", :acceptable_exit_codes => [0, 1, 2]) end it 'applies the manifest twice' do apply_manifest(pp, :catch_failures => true) - apply_manifest(pp, :catch_changes => true) + apply_manifest(pp, :catch_changes => true) end describe file(path) do it { should be_file } - it { should contain(content) } + its(:content) { + should match content + } end end - shared_examples 'has_error' do |path,pp,error| + shared_examples 'has_error' do |path, pp, error| before :all do - shell("rm #{path}", :acceptable_exit_codes => [0,1,2]) + shell("rm #{path}", :acceptable_exit_codes => [0, 1, 2]) end after :all do - shell("cat #{path}", :acceptable_exit_codes => [0,1,2]) - shell("rm #{path}", :acceptable_exit_codes => [0,1,2]) + shell("cat #{path}", :acceptable_exit_codes => [0, 1, 2]) + shell("rm #{path}", :acceptable_exit_codes => [0, 1, 2]) end it 'applies the manifest and gets a failure message' do @@ -68,14 +70,13 @@ it 'applies the manifest twice' do apply_manifest(pp, :catch_failures => true) - apply_manifest(pp, :catch_changes => true) + apply_manifest(pp, :catch_changes => true) end describe file("#{tmpdir}/ini_subsetting.ini") do it { should be_file } - #XXX Solaris 10 doesn't support multi-line grep - it("should contain [one]\nkey = alphabet betatrons", :unless => fact('osfamily') == 'Solaris') { - should contain("[one]\nkey = alphabet betatrons") + its(:content) { + should match /\[one\]\nkey = alphabet betatrons/ } end end @@ -101,27 +102,27 @@ it 'applies the manifest twice' do apply_manifest(pp, :catch_failures => true) - apply_manifest(pp, :catch_changes => true) + apply_manifest(pp, :catch_changes => true) end describe file("#{tmpdir}/ini_subsetting.ini") do it { should be_file } - it { should contain('[one]') } - it { should contain('key = betatrons') } - it { should_not contain('alphabet') } + its(:content) { + should match /\[one\]/ + should match /key = betatrons/ + should_not match /alphabet/ + } end end end describe 'subsetting_separator' do { - "" => "two = twinethree foobar", - #"subsetting_separator => ''," => "two = twinethreefoobar", # breaks regex - "subsetting_separator => ','," => "two = twinethree,foobar", - "subsetting_separator => ' '," => "two = twinethree foobar", - "subsetting_separator => ' == '," => "two = twinethree == foobar", - "subsetting_separator => '='," => "two = twinethree=foobar", - #"subsetting_separator => '---'," => "two = twinethree---foobar", # breaks regex + "" => /two = twinethree foobar/, + "subsetting_separator => ','," => /two = twinethree,foobar/, + "subsetting_separator => ' '," => /two = twinethree foobar/, + "subsetting_separator => ' == '," => /two = twinethree == foobar/, + "subsetting_separator => '='," => /two = twinethree=foobar/, }.each do |parameter, content| context "with \"#{parameter}\" makes \"#{content}\"" do pp = <<-EOS @@ -152,10 +153,10 @@ describe 'quote_char' do { - ['-Xmx'] => 'args=""', - ['-Xmx', '256m'] => 'args=-Xmx256m', - ['-Xmx', '512m'] => 'args="-Xmx512m"', - ['-Xms', '256m'] => 'args="-Xmx256m -Xms256m"', + ['-Xmx'] => /args=""/, + ['-Xmx', '256m'] => /args=-Xmx256m/, + ['-Xmx', '512m'] => /args="-Xmx512m"/, + ['-Xms', '256m'] => /args="-Xmx256m -Xms256m"/, }.each do |parameter, content| context %Q{with '#{parameter.first}' #{parameter.length > 1 ? '=> \'' << parameter[1] << '\'' : 'absent'} makes '#{content}'} do path = File.join(tmpdir, 'ini_subsetting.ini') @@ -164,8 +165,8 @@ shell(%Q{echo '[java]\nargs=-Xmx256m' > #{path}}) end after :all do - shell("cat #{path}", :acceptable_exit_codes => [0,1,2]) - shell("rm #{path}", :acceptable_exit_codes => [0,1,2]) + shell("cat #{path}", :acceptable_exit_codes => [0, 1, 2]) + shell("rm #{path}", :acceptable_exit_codes => [0, 1, 2]) end pp = <<-EOS @@ -182,12 +183,14 @@ it 'applies the manifest twice' do apply_manifest(pp, :catch_failures => true) - apply_manifest(pp, :catch_changes => true) + apply_manifest(pp, :catch_changes => true) end describe file("#{tmpdir}/ini_subsetting.ini") do it { should be_file } - it { should contain(content) } + its(:content) { + should match content + } end end end diff --git a/spec/spec_helper_acceptance.rb b/spec/spec_helper_acceptance.rb index bfa758429..80a6b6257 100644 --- a/spec/spec_helper_acceptance.rb +++ b/spec/spec_helper_acceptance.rb @@ -4,9 +4,13 @@ unless ENV['RS_PROVISION'] == 'no' # This will install the latest available package on el and deb based # systems fail on windows and osx, and install via gem on other *nixes - foss_opts = { :default_action => 'gem_install' } + foss_opts = {:default_action => 'gem_install'} - if default.is_pe?; then install_pe; else install_puppet( foss_opts ); end + if default.is_pe?; then + install_pe; + else + install_puppet(foss_opts); + end hosts.each do |host| if host['platform'] =~ /debian/ @@ -27,14 +31,7 @@ c.before :suite do # Install module and dependencies hosts.each do |host| - if host['platform'] !~ /windows/i - copy_root_module_to(host, :source => proj_root, :module_name => 'inifile') - end - end - hosts.each do |host| - if host['platform'] =~ /windows/i - on host, puppet('plugin download') - end + copy_root_module_to(host, :source => proj_root, :module_name => 'inifile') end end