serverspec 0.5.8 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/serverspec.rb +37 -33
- data/lib/serverspec/helper.rb +0 -3
- data/lib/serverspec/matchers.rb +18 -34
- data/lib/serverspec/matchers/be_executable.rb +1 -9
- data/lib/serverspec/matchers/be_installed.rb +1 -15
- data/lib/serverspec/matchers/be_mounted.rb +1 -5
- data/lib/serverspec/matchers/be_reachable.rb +1 -5
- data/lib/serverspec/matchers/be_readable.rb +1 -9
- data/lib/serverspec/matchers/be_resolvable.rb +1 -5
- data/lib/serverspec/matchers/be_running.rb +1 -15
- data/lib/serverspec/matchers/be_writable.rb +1 -9
- data/lib/serverspec/matchers/belong_to_group.rb +1 -5
- data/lib/serverspec/matchers/contain.rb +1 -11
- data/lib/serverspec/matchers/have_entry.rb +0 -2
- data/lib/serverspec/matchers/match_md5checksum.rb +1 -5
- data/lib/serverspec/matchers/return_exit_status.rb +1 -6
- data/lib/serverspec/matchers/return_stderr.rb +1 -10
- data/lib/serverspec/matchers/return_stdout.rb +1 -10
- data/lib/serverspec/version.rb +1 -1
- data/spec/darwin/commands_spec.rb +1 -1
- data/spec/debian/commands_spec.rb +1 -1
- data/spec/gentoo/commands_spec.rb +1 -1
- data/spec/redhat/commands_spec.rb +1 -1
- data/spec/solaris/commands_spec.rb +1 -1
- data/spec/solaris/service_spec.rb +1 -1
- data/spec/support/shared_commands_examples.rb +2 -2
- data/spec/support/shared_cron_examples.rb +4 -4
- data/spec/support/shared_group_examples.rb +2 -2
- data/spec/support/shared_iptables_examples.rb +2 -2
- data/spec/support/shared_package_examples.rb +4 -4
- data/spec/support/shared_user_examples.rb +2 -2
- metadata +3 -45
- data/lib/serverspec/backend/puppet.rb +0 -108
- data/lib/serverspec/filter.rb +0 -21
- data/lib/serverspec/helper/obsoleted.rb +0 -74
- data/lib/serverspec/matchers/be_default_gateway.rb +0 -14
- data/lib/serverspec/matchers/be_directory.rb +0 -9
- data/lib/serverspec/matchers/be_disabled.rb +0 -9
- data/lib/serverspec/matchers/be_enabled.rb +0 -9
- data/lib/serverspec/matchers/be_enforcing.rb +0 -10
- data/lib/serverspec/matchers/be_file.rb +0 -9
- data/lib/serverspec/matchers/be_group.rb +0 -5
- data/lib/serverspec/matchers/be_grouped_into.rb +0 -9
- data/lib/serverspec/matchers/be_linked_to.rb +0 -9
- data/lib/serverspec/matchers/be_listening.rb +0 -10
- data/lib/serverspec/matchers/be_mode.rb +0 -9
- data/lib/serverspec/matchers/be_owned_by.rb +0 -9
- data/lib/serverspec/matchers/be_permissive.rb +0 -9
- data/lib/serverspec/matchers/be_user.rb +0 -5
- data/lib/serverspec/matchers/be_zfs.rb +0 -9
- data/lib/serverspec/matchers/get_stdout.rb +0 -14
- data/lib/serverspec/matchers/have_authorized_key.rb +0 -9
- data/lib/serverspec/matchers/have_cron_entry.rb +0 -9
- data/lib/serverspec/matchers/have_gid.rb +0 -10
- data/lib/serverspec/matchers/have_home_directory.rb +0 -10
- data/lib/serverspec/matchers/have_ipfilter_rule.rb +0 -5
- data/lib/serverspec/matchers/have_ipnat_rule.rb +0 -5
- data/lib/serverspec/matchers/have_iptables_rule.rb +0 -11
- data/lib/serverspec/matchers/have_login_shell.rb +0 -10
- data/lib/serverspec/matchers/have_svcprop.rb +0 -9
- data/lib/serverspec/matchers/have_svcprops.rb +0 -5
- data/lib/serverspec/matchers/have_uid.rb +0 -10
- data/spec/darwin/matchers_spec.rb +0 -89
- data/spec/debian/matchers_spec.rb +0 -92
- data/spec/gentoo/matchers_spec.rb +0 -93
- data/spec/redhat/matchers_spec.rb +0 -98
- data/spec/solaris/matchers_spec.rb +0 -92
- data/spec/support/shared_matcher_examples.rb +0 -1310
data/lib/serverspec.rb
CHANGED
@@ -5,7 +5,6 @@ require 'serverspec/matchers'
|
|
5
5
|
require 'serverspec/backend'
|
6
6
|
require 'serverspec/helper'
|
7
7
|
require 'serverspec/setup'
|
8
|
-
require 'serverspec/filter'
|
9
8
|
require 'serverspec/subject'
|
10
9
|
require 'serverspec/commands/base'
|
11
10
|
require 'serverspec/commands/linux'
|
@@ -15,6 +14,7 @@ require 'serverspec/commands/gentoo'
|
|
15
14
|
require 'serverspec/commands/solaris'
|
16
15
|
require 'serverspec/commands/darwin'
|
17
16
|
require 'serverspec/configuration'
|
17
|
+
require 'rspec/core/formatters/base_formatter'
|
18
18
|
|
19
19
|
include Serverspec
|
20
20
|
|
@@ -40,20 +40,6 @@ RSpec.configure do |c|
|
|
40
40
|
Serverspec.configuration.defaults.each { |k, v| c.add_setting k, :default => v }
|
41
41
|
c.before :each do
|
42
42
|
backend.set_example(example)
|
43
|
-
if described_class.nil?
|
44
|
-
puts
|
45
|
-
puts "*****************************************"
|
46
|
-
puts "Using a string as a subject is obsoleted."
|
47
|
-
puts "Please use a subject type object instead."
|
48
|
-
puts "See: http://serverspec.org/matchers.html"
|
49
|
-
puts "*****************************************"
|
50
|
-
puts
|
51
|
-
end
|
52
|
-
if described_class.nil? && subject == 'value'
|
53
|
-
def subject
|
54
|
-
Serverspec::Filter.filter_subject example
|
55
|
-
end
|
56
|
-
end
|
57
43
|
end
|
58
44
|
end
|
59
45
|
|
@@ -62,27 +48,45 @@ module RSpec
|
|
62
48
|
module DSL
|
63
49
|
class Matcher
|
64
50
|
def failure_message_for_should(&block)
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
if @custom
|
69
|
-
cache_or_call_cached(:failure_message_for_should, &block)
|
70
|
-
else
|
71
|
-
message = "#{example.metadata[:command]}\n"
|
72
|
-
message += "#{example.metadata[:stdout]}"
|
73
|
-
message
|
74
|
-
end
|
51
|
+
message = "#{example.metadata[:command]}\n"
|
52
|
+
message += "#{example.metadata[:stdout]}"
|
53
|
+
message
|
75
54
|
end
|
76
55
|
def failure_message_for_should_not(&block)
|
77
|
-
|
78
|
-
|
56
|
+
message = "#{example.metadata[:command]}\n"
|
57
|
+
message += "#{example.metadata[:stdout]}"
|
58
|
+
message
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
module Core
|
64
|
+
module Formatters
|
65
|
+
class BaseTextFormatter < BaseFormatter
|
66
|
+
def dump_failure_info(example)
|
67
|
+
exception = example.execution_result[:exception]
|
68
|
+
exception_class_name = exception_class_name_for(exception)
|
69
|
+
output.puts "#{long_padding}#{failure_color("Failure/Error:")} #{failure_color(read_failed_line(exception, example).strip)}"
|
70
|
+
output.puts "#{long_padding}#{failure_color(exception_class_name)}:" unless exception_class_name =~ /RSpec/
|
71
|
+
output.puts "#{long_padding} #{failure_color(example.metadata[:command])}"
|
72
|
+
output.puts "#{long_padding} #{failure_color(example.metadata[:stdout])}" if example.metadata[:stdout] != ''
|
73
|
+
|
74
|
+
if shared_group = find_shared_group(example)
|
75
|
+
dump_shared_failure_info(shared_group)
|
79
76
|
end
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
77
|
+
end
|
78
|
+
end
|
79
|
+
class ProgressFormatter < BaseTextFormatter
|
80
|
+
def dump_failure_info(example)
|
81
|
+
exception = example.execution_result[:exception]
|
82
|
+
exception_class_name = exception_class_name_for(exception)
|
83
|
+
output.puts "#{long_padding}#{failure_color("Failure/Error:")} #{failure_color(read_failed_line(exception, example).strip)}"
|
84
|
+
output.puts "#{long_padding}#{failure_color(exception_class_name)}:" unless exception_class_name =~ /RSpec/
|
85
|
+
output.puts "#{long_padding} #{failure_color(example.metadata[:command])}"
|
86
|
+
output.puts "#{long_padding} #{failure_color(example.metadata[:stdout])}" if example.metadata[:stdout] != ''
|
87
|
+
|
88
|
+
if shared_group = find_shared_group(example)
|
89
|
+
dump_shared_failure_info(shared_group)
|
86
90
|
end
|
87
91
|
end
|
88
92
|
end
|
data/lib/serverspec/helper.rb
CHANGED
data/lib/serverspec/matchers.rb
CHANGED
@@ -1,46 +1,30 @@
|
|
1
|
+
# file
|
1
2
|
require 'serverspec/matchers/be_mounted'
|
3
|
+
require 'serverspec/matchers/contain'
|
4
|
+
require 'serverspec/matchers/be_readable'
|
5
|
+
require 'serverspec/matchers/be_writable'
|
6
|
+
require 'serverspec/matchers/be_executable'
|
7
|
+
require 'serverspec/matchers/match_md5checksum'
|
8
|
+
|
9
|
+
# host
|
2
10
|
require 'serverspec/matchers/be_resolvable'
|
3
|
-
require 'serverspec/matchers/be_enabled'
|
4
|
-
require 'serverspec/matchers/be_file'
|
5
11
|
require 'serverspec/matchers/be_reachable'
|
6
|
-
|
7
|
-
|
12
|
+
|
13
|
+
# package
|
8
14
|
require 'serverspec/matchers/be_installed'
|
9
|
-
|
15
|
+
|
16
|
+
# service
|
10
17
|
require 'serverspec/matchers/be_running'
|
11
|
-
|
12
|
-
|
13
|
-
require 'serverspec/matchers/be_group'
|
14
|
-
require 'serverspec/matchers/be_mode'
|
15
|
-
require 'serverspec/matchers/be_owned_by'
|
16
|
-
require 'serverspec/matchers/be_grouped_into'
|
17
|
-
require 'serverspec/matchers/have_entry'
|
18
|
-
require 'serverspec/matchers/have_cron_entry'
|
19
|
-
require 'serverspec/matchers/be_linked_to'
|
18
|
+
|
19
|
+
# user
|
20
20
|
require 'serverspec/matchers/belong_to_group'
|
21
|
-
|
22
|
-
require 'serverspec/matchers/have_uid'
|
23
|
-
require 'serverspec/matchers/have_login_shell'
|
24
|
-
require 'serverspec/matchers/have_home_directory'
|
25
|
-
require 'serverspec/matchers/have_authorized_key'
|
26
|
-
require 'serverspec/matchers/have_iptables_rule'
|
27
|
-
require 'serverspec/matchers/get_stdout'
|
28
|
-
require 'serverspec/matchers/be_zfs'
|
29
|
-
require 'serverspec/matchers/be_readable'
|
30
|
-
require 'serverspec/matchers/be_writable'
|
31
|
-
require 'serverspec/matchers/be_executable'
|
32
|
-
require 'serverspec/matchers/be_enforcing'
|
33
|
-
require 'serverspec/matchers/be_permissive'
|
34
|
-
require 'serverspec/matchers/be_disabled'
|
35
|
-
require 'serverspec/matchers/have_ipfilter_rule'
|
36
|
-
require 'serverspec/matchers/have_ipnat_rule'
|
37
|
-
require 'serverspec/matchers/have_svcprop'
|
38
|
-
require 'serverspec/matchers/have_svcprops'
|
21
|
+
|
39
22
|
require 'serverspec/matchers/return_exit_status'
|
40
23
|
require 'serverspec/matchers/return_stdout'
|
41
24
|
require 'serverspec/matchers/return_stderr'
|
42
|
-
require 'serverspec/matchers/match_md5checksum'
|
43
25
|
|
44
|
-
#
|
26
|
+
# ipfiter, ipnat, iptables
|
45
27
|
require 'serverspec/matchers/have_rule'
|
46
28
|
|
29
|
+
# cron, routing_table
|
30
|
+
require 'serverspec/matchers/have_entry'
|
@@ -1,14 +1,6 @@
|
|
1
1
|
RSpec::Matchers.define :be_executable do
|
2
2
|
match do |file|
|
3
|
-
|
4
|
-
file.executable?(@by_whom, @by_user)
|
5
|
-
else
|
6
|
-
if @by_user != nil
|
7
|
-
backend.check_access_by_user(file, @by_user, 'x')
|
8
|
-
else
|
9
|
-
backend.check_executable(file, @by_whom)
|
10
|
-
end
|
11
|
-
end
|
3
|
+
file.executable?(@by_whom, @by_user)
|
12
4
|
end
|
13
5
|
chain :by do |by_whom|
|
14
6
|
@by_whom = by_whom
|
@@ -1,20 +1,6 @@
|
|
1
1
|
RSpec::Matchers.define :be_installed do
|
2
2
|
match do |name|
|
3
|
-
|
4
|
-
name.installed?(@provider, @version)
|
5
|
-
else
|
6
|
-
if @provider.nil?
|
7
|
-
backend.check_installed(name)
|
8
|
-
else
|
9
|
-
check_method = "check_installed_by_#{@provider}".to_sym
|
10
|
-
|
11
|
-
unless backend.respond_to?(check_method) || commands.respond_to?(check_method)
|
12
|
-
raise ArgumentError.new("`be_installed` matcher doesn't support #{@under}")
|
13
|
-
end
|
14
|
-
|
15
|
-
backend.send(check_method, name, @version)
|
16
|
-
end
|
17
|
-
end
|
3
|
+
name.installed?(@provider, @version)
|
18
4
|
end
|
19
5
|
|
20
6
|
chain :by do |provider|
|
@@ -1,10 +1,6 @@
|
|
1
1
|
RSpec::Matchers.define :be_mounted do
|
2
2
|
match do |path|
|
3
|
-
|
4
|
-
path.mounted?(@attr, @only_with)
|
5
|
-
else
|
6
|
-
backend.check_mounted(path, @attr, @only_with)
|
7
|
-
end
|
3
|
+
path.mounted?(@attr, @only_with)
|
8
4
|
end
|
9
5
|
chain :with do |attr|
|
10
6
|
@attr = attr
|
@@ -8,11 +8,7 @@ RSpec::Matchers.define :be_reachable do
|
|
8
8
|
timeout = @attr[:timeout] if @attr[:timeout]
|
9
9
|
end
|
10
10
|
|
11
|
-
|
12
|
-
host.reachable?(port, proto, timeout)
|
13
|
-
else
|
14
|
-
backend.check_reachable(host, port, proto, timeout)
|
15
|
-
end
|
11
|
+
host.reachable?(port, proto, timeout)
|
16
12
|
end
|
17
13
|
|
18
14
|
chain :with do |attr|
|
@@ -1,14 +1,6 @@
|
|
1
1
|
RSpec::Matchers.define :be_readable do
|
2
2
|
match do |file|
|
3
|
-
|
4
|
-
file.readable?(@by_whom, @by_user)
|
5
|
-
else
|
6
|
-
if @by_user != nil
|
7
|
-
backend.check_access_by_user(file, @by_user, 'r')
|
8
|
-
else
|
9
|
-
backend.check_readable(file, @by_whom)
|
10
|
-
end
|
11
|
-
end
|
3
|
+
file.readable?(@by_whom, @by_user)
|
12
4
|
end
|
13
5
|
chain :by do |by_whom|
|
14
6
|
@by_whom = by_whom
|
@@ -1,20 +1,6 @@
|
|
1
1
|
RSpec::Matchers.define :be_running do
|
2
2
|
match do |process|
|
3
|
-
|
4
|
-
process.running? @under
|
5
|
-
else
|
6
|
-
if (@under)
|
7
|
-
check_method = "check_running_under_#{@under}".to_sym
|
8
|
-
|
9
|
-
unless backend.respond_to?(check_method)
|
10
|
-
raise ArgumentError.new("`be_running` matcher doesn't support #{@under}")
|
11
|
-
end
|
12
|
-
|
13
|
-
backend.send(check_method, process)
|
14
|
-
else
|
15
|
-
backend.check_running(process)
|
16
|
-
end
|
17
|
-
end
|
3
|
+
process.running?(@under)
|
18
4
|
end
|
19
5
|
|
20
6
|
chain :under do |under|
|
@@ -1,14 +1,6 @@
|
|
1
1
|
RSpec::Matchers.define :be_writable do
|
2
2
|
match do |file|
|
3
|
-
|
4
|
-
file.writable?(@by_whom, @by_user)
|
5
|
-
else
|
6
|
-
if @by_user != nil
|
7
|
-
backend.check_access_by_user(file, @by_user, 'w')
|
8
|
-
else
|
9
|
-
backend.check_writable(file, @by_whom)
|
10
|
-
end
|
11
|
-
end
|
3
|
+
file.writable?(@by_whom, @by_user)
|
12
4
|
end
|
13
5
|
chain :by do |by_whom|
|
14
6
|
@by_whom = by_whom
|
@@ -1,16 +1,6 @@
|
|
1
1
|
RSpec::Matchers.define :contain do |pattern|
|
2
2
|
match do |file|
|
3
|
-
|
4
|
-
file.contain(pattern, @from, @to)
|
5
|
-
else
|
6
|
-
if (@from || @to).nil?
|
7
|
-
cmd = backend.commands.check_file_contain(file, pattern)
|
8
|
-
else
|
9
|
-
cmd = backend.commands.check_file_contain_within(file, pattern, @from, @to)
|
10
|
-
end
|
11
|
-
ret = backend.run_command(cmd)
|
12
|
-
ret[:exit_status] == 0
|
13
|
-
end
|
3
|
+
file.contain(pattern, @from, @to)
|
14
4
|
end
|
15
5
|
# for contain(pattern).from(/A/).to(/B/)
|
16
6
|
chain :from do |from|
|
@@ -1,10 +1,5 @@
|
|
1
1
|
RSpec::Matchers.define :return_exit_status do |status|
|
2
2
|
match do |command|
|
3
|
-
|
4
|
-
command.return_exit_status?(status)
|
5
|
-
else
|
6
|
-
ret = backend.run_command(command)
|
7
|
-
ret[:exit_status].to_i == status
|
8
|
-
end
|
3
|
+
command.return_exit_status?(status)
|
9
4
|
end
|
10
5
|
end
|
@@ -1,14 +1,5 @@
|
|
1
1
|
RSpec::Matchers.define :return_stderr do |content|
|
2
2
|
match do |command|
|
3
|
-
|
4
|
-
command.return_stderr?(content)
|
5
|
-
else
|
6
|
-
ret = backend.run_command(command)
|
7
|
-
if content.instance_of?(Regexp)
|
8
|
-
ret[:stderr] =~ content
|
9
|
-
else
|
10
|
-
ret[:stderr].strip == content
|
11
|
-
end
|
12
|
-
end
|
3
|
+
command.return_stderr?(content)
|
13
4
|
end
|
14
5
|
end
|
@@ -1,14 +1,5 @@
|
|
1
1
|
RSpec::Matchers.define :return_stdout do |content|
|
2
2
|
match do |command|
|
3
|
-
|
4
|
-
command.return_stdout?(content)
|
5
|
-
else
|
6
|
-
ret = backend.run_command(command)
|
7
|
-
if content.instance_of?(Regexp)
|
8
|
-
ret[:stdout] =~ content
|
9
|
-
else
|
10
|
-
ret[:stdout].strip == content
|
11
|
-
end
|
12
|
-
end
|
3
|
+
command.return_stdout?(content)
|
13
4
|
end
|
14
5
|
end
|
data/lib/serverspec/version.rb
CHANGED
@@ -7,7 +7,7 @@ describe 'Serverspec commands of Darwin family' do
|
|
7
7
|
it_behaves_like 'support command check_directory', '/var/log'
|
8
8
|
|
9
9
|
it_behaves_like 'support command check_installed_by_gem', 'jekyll'
|
10
|
-
it_behaves_like 'support command check_installed_by_gem', 'jekyll', '1.0.2'
|
10
|
+
it_behaves_like 'support command check_installed_by_gem with_version', 'jekyll', '1.0.2'
|
11
11
|
|
12
12
|
it_behaves_like 'support command check_mounted', '/'
|
13
13
|
|
@@ -7,7 +7,7 @@ describe 'Serverspec commands of Debian family' do
|
|
7
7
|
it_behaves_like 'support command check_directory', '/var/log'
|
8
8
|
|
9
9
|
it_behaves_like 'support command check_installed_by_gem', 'jekyll'
|
10
|
-
it_behaves_like 'support command check_installed_by_gem', 'jekyll', '1.0.2'
|
10
|
+
it_behaves_like 'support command check_installed_by_gem with_version', 'jekyll', '1.0.2'
|
11
11
|
|
12
12
|
it_behaves_like 'support command check_mounted', '/'
|
13
13
|
|
@@ -7,7 +7,7 @@ describe 'Serverspec commands of Gentoo family' do
|
|
7
7
|
it_behaves_like 'support command check_directory', '/var/log'
|
8
8
|
|
9
9
|
it_behaves_like 'support command check_installed_by_gem', 'jekyll'
|
10
|
-
it_behaves_like 'support command check_installed_by_gem', 'jekyll', '1.0.2'
|
10
|
+
it_behaves_like 'support command check_installed_by_gem with_version', 'jekyll', '1.0.2'
|
11
11
|
|
12
12
|
it_behaves_like 'support command check_mounted', '/'
|
13
13
|
|
@@ -7,7 +7,7 @@ describe 'Serverspec commands of Red Hat' do
|
|
7
7
|
it_behaves_like 'support command check_directory', '/var/log'
|
8
8
|
|
9
9
|
it_behaves_like 'support command check_installed_by_gem', 'jekyll'
|
10
|
-
it_behaves_like 'support command check_installed_by_gem', 'jekyll', '1.0.2'
|
10
|
+
it_behaves_like 'support command check_installed_by_gem with_version', 'jekyll', '1.0.2'
|
11
11
|
|
12
12
|
it_behaves_like 'support command check_mounted', '/'
|
13
13
|
|