Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix be_enabled.with_level and add specs #173

Merged
merged 2 commits into from Jun 29, 2013
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.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib/serverspec/commands/gentoo.rb
@@ -1,7 +1,7 @@
module Serverspec
module Commands
class Gentoo < Linux
def check_enabled(service)
def check_enabled(service, level=3)
regexp = "^\\s*#{service}\\s*|\\s*\\(boot\\|default\\)"
"rc-update show | grep -- #{escape(regexp)}"
end
Expand Down
1 change: 1 addition & 0 deletions lib/serverspec/matchers.rb
Expand Up @@ -14,6 +14,7 @@
require 'serverspec/matchers/be_installed'

# service
require 'serverspec/matchers/be_enabled'
require 'serverspec/matchers/be_running'

# user
Expand Down
13 changes: 13 additions & 0 deletions lib/serverspec/matchers/be_enabled.rb
@@ -0,0 +1,13 @@
RSpec::Matchers.define :be_enabled do
match do |subject|
if subject.class.name == 'Serverspec::Type::Sercice'
subject.enabled?(@level)
else
subject.enabled?
end
end

chain :with_level do |level|
@level = level
end
end
4 changes: 2 additions & 2 deletions lib/serverspec/type/service.rb
@@ -1,8 +1,8 @@
module Serverspec
module Type
class Service < Base
def enabled?
backend.check_enabled(@name)
def enabled?(level=3)
backend.check_enabled(@name, level)
end

def running?(under)
Expand Down
1 change: 1 addition & 0 deletions spec/debian/service_spec.rb
Expand Up @@ -4,6 +4,7 @@

describe 'Serverspec service matchers of Red Hat family' do
it_behaves_like 'support service enabled matcher', 'sshd'
it_behaves_like 'support service enabled with level matcher', 'sshd', 3
it_behaves_like 'support service running matcher', 'sshd'
it_behaves_like 'support service running under supervisor matcher', 'sshd'
it_behaves_like 'support service running under unimplemented matcher', 'sshd'
Expand Down
5 changes: 3 additions & 2 deletions spec/gentoo/service_spec.rb
Expand Up @@ -2,9 +2,10 @@

include Serverspec::Helper::Gentoo

describe 'Serverspec service matchers of Red Hat family' do
describe 'Serverspec service matchers of Gentoo family' do
it_behaves_like 'support service enabled matcher', 'sshd'
it_behaves_like 'support service enabled with level matcher', 'sshd', 3
it_behaves_like 'support service running matcher', 'sshd'
it_behaves_like 'support service running under supervisor matcher', 'sshd'
it_behaves_like 'support service running under unimplemented matcher', 'sshd'
it_behaves_like 'support service enabled matcher', 'sshd'
end
5 changes: 5 additions & 0 deletions spec/redhat/commands_spec.rb
Expand Up @@ -68,6 +68,11 @@
it { should eq 'chkconfig --list httpd | grep 3:on' }
end

describe 'check_enabled with level 4' do
subject { commands.check_enabled('httpd', 4) }
it { should eq 'chkconfig --list httpd | grep 4:on' }
end

describe 'check_yumrepo' do
subject { commands.check_yumrepo('epel') }
it { should eq 'yum repolist all -C | grep ^epel' }
Expand Down
1 change: 1 addition & 0 deletions spec/redhat/service_spec.rb
Expand Up @@ -4,6 +4,7 @@

describe 'Serverspec service matchers of Red Hat family' do
it_behaves_like 'support service enabled matcher', 'sshd'
it_behaves_like 'support service enabled with level matcher', 'sshd', 3
it_behaves_like 'support service running matcher', 'sshd'
it_behaves_like 'support service running under supervisor matcher', 'sshd'
it_behaves_like 'support service running under unimplemented matcher', 'sshd'
Expand Down
1 change: 1 addition & 0 deletions spec/solaris/service_spec.rb
Expand Up @@ -4,6 +4,7 @@

describe 'Serverspec service matchers of Solaris' do
it_behaves_like 'support service enabled matcher', 'sshd'
it_behaves_like 'support service enabled with level matcher', 'sshd', 3
it_behaves_like 'support service running matcher', 'sshd'
it_behaves_like 'support service running under supervisor matcher', 'sshd'
it_behaves_like 'support service running under unimplemented matcher', 'sshd'
Expand Down
5 changes: 5 additions & 0 deletions spec/support/shared_commands_examples.rb
Expand Up @@ -3,6 +3,11 @@
it { should eq "gem list --local | grep -w -- ^#{package}" }
end

shared_examples_for 'support command check_enabled' do |service|
subject { commands.check_enabled(service, 3) }
it { should eq "gem list --local | grep -w -- ^#{package}" }
end

shared_examples_for 'support command check_installed_by_gem with_version' do |package, version|
subject { commands.check_installed_by_gem(package, version) }
it { should eq "gem list --local | grep -w -- ^#{package} | grep -w -- #{version}" }
Expand Down
12 changes: 12 additions & 0 deletions spec/support/shared_service_examples.rb
Expand Up @@ -10,6 +10,18 @@
end
end

shared_examples_for 'support service enabled with level matcher' do |valid_service, level|
describe 'be_enabled' do
describe service(valid_service) do
it { should be_enabled.with_level(level) }
end

describe service('invalid-service') do
it { should_not be_enabled.with_level(level) }
end
end
end

shared_examples_for 'support service running matcher' do |valid_service|
describe 'be_running' do
describe service(valid_service) do
Expand Down