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

Explicit port subject type #108

Merged
merged 2 commits into from May 17, 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
4 changes: 3 additions & 1 deletion lib/serverspec/helper/type.rb
@@ -1,10 +1,12 @@
require 'serverspec/type/base'
require 'serverspec/type/service'
require 'serverspec/type/package'
require 'serverspec/type/port'

module Serverspec
module Helper
module Type
%w( service package ).each do |type|
%w( service package port ).each do |type|
define_method type do |name|
self.class.const_get('Serverspec').const_get('Type').const_get(type.capitalize).new(name)
end
Expand Down
8 changes: 6 additions & 2 deletions lib/serverspec/matchers/be_listening.rb
@@ -1,6 +1,10 @@
RSpec::Matchers.define :be_listening do
match do |actual|
port = actual.gsub(/port\s+/, '')
backend.check_listening(example, port)
if actual.respond_to?(:listening?)
actual.listening?
else
port = actual.gsub(/port\s+/, '')
backend.check_listening(example, port)
end
end
end
14 changes: 14 additions & 0 deletions lib/serverspec/type/base.rb
@@ -0,0 +1,14 @@
module Serverspec
module Type
class Base
def initialize name
@name = name
end

def to_s
type = self.class.name.split(':')[-1]
%Q!#{type} "#{@name}"!
end
end
end
end
10 changes: 1 addition & 9 deletions lib/serverspec/type/package.rb
@@ -1,10 +1,6 @@
module Serverspec
module Type
class Package
def initialize name
@name = name
end

class Package < Base
def installed?(provider, version)
if provider.nil?
backend.check_installed(nil, @name)
Expand All @@ -18,10 +14,6 @@ def installed?(provider, version)
backend.send(check_method, nil, @name, version)
end
end

def to_s
%Q!Package "#{@name}"!
end
end
end
end
9 changes: 9 additions & 0 deletions lib/serverspec/type/port.rb
@@ -0,0 +1,9 @@
module Serverspec
module Type
class Port < Base
def listening?
backend.check_listening(nil, @name)
end
end
end
end
10 changes: 1 addition & 9 deletions lib/serverspec/type/service.rb
@@ -1,10 +1,6 @@
module Serverspec
module Type
class Service
def initialize name
@name = name
end

class Service < Base
def enabled?
backend.check_enabled(nil, @name)
end
Expand All @@ -22,10 +18,6 @@ def running? under
backend.check_running(nil, @name)
end
end

def to_s
%Q!Service "#{@name}"!
end
end
end
end
7 changes: 7 additions & 0 deletions spec/darwin/port_spec.rb
@@ -0,0 +1,7 @@
require 'spec_helper'

include Serverspec::Helper::Darwin

describe 'Serverspec package matchers of Darwin family' do
it_behaves_like 'support port listening matcher', 80
end
7 changes: 7 additions & 0 deletions spec/debian/port_spec.rb
@@ -0,0 +1,7 @@
require 'spec_helper'

include Serverspec::Helper::Debian

describe 'Serverspec package matchers of Debian family' do
it_behaves_like 'support port listening matcher', 80
end
7 changes: 7 additions & 0 deletions spec/gentoo/port_spec.rb
@@ -0,0 +1,7 @@
require 'spec_helper'

include Serverspec::Helper::Gentoo

describe 'Serverspec package matchers of Gentoo family' do
it_behaves_like 'support port listening matcher', 80
end
7 changes: 7 additions & 0 deletions spec/redhat/port_spec.rb
@@ -0,0 +1,7 @@
require 'spec_helper'

include Serverspec::Helper::RedHat

describe 'Serverspec package matchers of Red Hat family' do
it_behaves_like 'support port listening matcher', 80
end
7 changes: 7 additions & 0 deletions spec/solaris/port_spec.rb
@@ -0,0 +1,7 @@
require 'spec_helper'

include Serverspec::Helper::Solaris

describe 'Serverspec package matchers of Solaris family' do
it_behaves_like 'support port listening matcher', 80
end
11 changes: 11 additions & 0 deletions spec/support/shared_port_examples.rb
@@ -0,0 +1,11 @@
shared_examples_for 'support port listening matcher' do |num|
describe 'listening' do
describe port(num) do
it { should be_listening }
end

describe port('invalid') do
it { should_not be_listening }
end
end
end