Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,18 @@ group :development, :unit_tests do
gem 'simplecov', :require => false
gem 'puppet_facts', :require => false
gem 'json', :require => false
gem 'pry', :require => false
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you intend to leave pry in here?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes

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
Expand Down
83 changes: 42 additions & 41 deletions spec/acceptance/ini_setting_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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 }
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did the serverspec update fix this on solaris 10?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes, it works, I have tested it against solaris 10, it was the grep that was broken, its(:content) does not use the multiline grep so with a regex it matches.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should contain still uses the specinfra matcher, however the serverspec its(:content) would use the https://github.com/serverspec/serverspec/blob/5b7e90f259305726527253744f7a0feb3de1cae4/lib/serverspec/type/file.rb#L97-L102 and read as a string and then use rspec match regex to match the multiline string.

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
Expand Down Expand Up @@ -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/
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why is there an extra \n added here?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Every time I ran it with a regex it was reporting two returns. Not sure if the grep was reporting differently or stdout, but it was consistent with all platforms on that failure. Tested on CentOS 6, Win 2008/2012 and Solaris 10.

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
Expand All @@ -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

Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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

Expand All @@ -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
Expand Down
71 changes: 37 additions & 34 deletions spec/acceptance/ini_subsetting_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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')
Expand All @@ -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
Expand All @@ -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
Expand Down
17 changes: 7 additions & 10 deletions spec/spec_helper_acceptance.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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/
Expand All @@ -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

Expand Down