serverspec 0.2.4 → 0.2.5
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 +3 -2
- data/lib/serverspec/backend/exec.rb +11 -64
- data/lib/serverspec/backend/puppet.rb +12 -12
- data/lib/serverspec/backend/ssh.rb +8 -4
- data/lib/serverspec/matchers/be_directory.rb +1 -1
- data/lib/serverspec/matchers/be_enabled.rb +1 -1
- data/lib/serverspec/matchers/be_executable.rb +1 -1
- data/lib/serverspec/matchers/be_file.rb +1 -1
- data/lib/serverspec/matchers/be_group.rb +1 -1
- data/lib/serverspec/matchers/be_grouped_into.rb +1 -1
- data/lib/serverspec/matchers/be_installed.rb +2 -2
- data/lib/serverspec/matchers/be_installed_by_gem.rb +1 -1
- data/lib/serverspec/matchers/be_linked_to.rb +1 -1
- data/lib/serverspec/matchers/be_listening.rb +1 -1
- data/lib/serverspec/matchers/be_mode.rb +1 -1
- data/lib/serverspec/matchers/be_owned_by.rb +1 -1
- data/lib/serverspec/matchers/be_readable.rb +1 -1
- data/lib/serverspec/matchers/be_running.rb +2 -2
- data/lib/serverspec/matchers/be_user.rb +1 -1
- data/lib/serverspec/matchers/be_writable.rb +1 -1
- data/lib/serverspec/matchers/be_zfs.rb +1 -1
- data/lib/serverspec/matchers/belong_to_group.rb +1 -1
- data/lib/serverspec/matchers/have_cron_entry.rb +1 -1
- data/lib/serverspec/matchers/have_iptables_rule.rb +1 -1
- data/lib/serverspec/setup.rb +1 -0
- data/lib/serverspec/version.rb +1 -1
- metadata +2 -2
data/lib/serverspec.rb
CHANGED
@@ -17,6 +17,7 @@ RSpec.configure do |c|
|
|
17
17
|
c.include(Serverspec::Helper::Debian, :os => :debian)
|
18
18
|
c.include(Serverspec::Helper::Gentoo, :os => :gentoo)
|
19
19
|
c.include(Serverspec::Helper::Solaris, :os => :solaris)
|
20
|
-
c.add_setting :host,
|
21
|
-
c.add_setting :ssh,
|
20
|
+
c.add_setting :host, :default => nil
|
21
|
+
c.add_setting :ssh, :default => nil
|
22
|
+
c.add_setting :sudo_password, :default => nil
|
22
23
|
end
|
@@ -22,31 +22,14 @@ module Serverspec
|
|
22
22
|
ret[:exit_code] == 0
|
23
23
|
end
|
24
24
|
|
25
|
-
|
26
|
-
|
25
|
+
# Default action is to call check_zero with args
|
26
|
+
def method_missing(meth, *args, &block)
|
27
|
+
# Remove example object from *args
|
28
|
+
args.shift
|
29
|
+
check_zero(meth, *args)
|
27
30
|
end
|
28
31
|
|
29
|
-
def
|
30
|
-
check_zero(:check_enabled, service)
|
31
|
-
end
|
32
|
-
|
33
|
-
def check_file(file)
|
34
|
-
check_zero(:check_file, file)
|
35
|
-
end
|
36
|
-
|
37
|
-
def check_group(group)
|
38
|
-
check_zero(:check_group, group)
|
39
|
-
end
|
40
|
-
|
41
|
-
def check_grouped(file, group)
|
42
|
-
check_zero(:check_grouped, file, group)
|
43
|
-
end
|
44
|
-
|
45
|
-
def check_installed(package)
|
46
|
-
check_zero(:check_installed, package)
|
47
|
-
end
|
48
|
-
|
49
|
-
def check_installed_by_gem(package, version)
|
32
|
+
def check_installed_by_gem(example, package, version)
|
50
33
|
ret = do_check(commands.check_installed_by_gem(package))
|
51
34
|
res = ret[:exit_code] == 0
|
52
35
|
if res && version
|
@@ -55,23 +38,7 @@ module Serverspec
|
|
55
38
|
res
|
56
39
|
end
|
57
40
|
|
58
|
-
def
|
59
|
-
check_zero(:check_link, link, target)
|
60
|
-
end
|
61
|
-
|
62
|
-
def check_listening(port)
|
63
|
-
check_zero(:check_listening, port)
|
64
|
-
end
|
65
|
-
|
66
|
-
def check_mode(file, mode)
|
67
|
-
check_zero(:check_mode, file, mode)
|
68
|
-
end
|
69
|
-
|
70
|
-
def check_owner(file, owner)
|
71
|
-
check_zero(:check_owner, file, owner)
|
72
|
-
end
|
73
|
-
|
74
|
-
def check_running(process)
|
41
|
+
def check_running(example, process)
|
75
42
|
ret = do_check(commands.check_running(process))
|
76
43
|
if ret[:exit_code] == 1 || ret[:stdout] =~ /stopped/
|
77
44
|
ret = do_check(commands.check_process(process))
|
@@ -79,32 +46,12 @@ module Serverspec
|
|
79
46
|
ret[:exit_code] == 0
|
80
47
|
end
|
81
48
|
|
82
|
-
def check_running_under_supervisor(process)
|
49
|
+
def check_running_under_supervisor(example, process)
|
83
50
|
ret = do_check(commands.check_running_under_supervisor(process))
|
84
51
|
ret[:exit_code] == 0 && ret[:stdout] =~ /RUNNING/
|
85
52
|
end
|
86
53
|
|
87
|
-
def
|
88
|
-
check_zero(:check_user, user)
|
89
|
-
end
|
90
|
-
|
91
|
-
def check_belonging_group(user, group)
|
92
|
-
check_zero(:check_belonging_group, user, group)
|
93
|
-
end
|
94
|
-
|
95
|
-
def check_cron_entry(user, entry)
|
96
|
-
check_zero(:check_cron_entry, user, entry)
|
97
|
-
end
|
98
|
-
|
99
|
-
def check_iptables_rule(rule, table, chain)
|
100
|
-
check_zero(:check_iptables_rule, rule, table, chain)
|
101
|
-
end
|
102
|
-
|
103
|
-
def check_zfs(zfs, property)
|
104
|
-
check_zero(:check_zfs, zfs, property)
|
105
|
-
end
|
106
|
-
|
107
|
-
def check_readable(file, by_whom)
|
54
|
+
def check_readable(example, file, by_whom)
|
108
55
|
mode = sprintf('%04s',do_check(commands.get_mode(file))[:stdout].strip)
|
109
56
|
mode_octal = mode[0].to_i * 512 + mode[1].to_i * 64 + mode[2].to_i * 8 + mode[3].to_i * 1
|
110
57
|
if by_whom.nil?
|
@@ -118,7 +65,7 @@ module Serverspec
|
|
118
65
|
end
|
119
66
|
end
|
120
67
|
|
121
|
-
def check_writable(file, by_whom)
|
68
|
+
def check_writable(example, file, by_whom)
|
122
69
|
mode = sprintf('%04s',do_check(commands.get_mode(file))[:stdout].strip)
|
123
70
|
mode_octal = mode[0].to_i * 512 + mode[1].to_i * 64 + mode[2].to_i * 8 + mode[3].to_i * 1
|
124
71
|
if by_whom.nil?
|
@@ -132,7 +79,7 @@ module Serverspec
|
|
132
79
|
end
|
133
80
|
end
|
134
81
|
|
135
|
-
def check_executable(file, by_whom)
|
82
|
+
def check_executable(example, file, by_whom)
|
136
83
|
mode = sprintf('%04s',do_check(commands.get_mode(file))[:stdout].strip)
|
137
84
|
mode_octal = mode[0].to_i * 512 + mode[1].to_i * 64 + mode[2].to_i * 8 + mode[3].to_i * 1
|
138
85
|
if by_whom.nil?
|
@@ -9,22 +9,22 @@ module Serverspec
|
|
9
9
|
module Backend
|
10
10
|
class Puppet < Exec # Use Exec methods as fallbacks
|
11
11
|
|
12
|
-
def check_directory(directory)
|
12
|
+
def check_directory(example, directory)
|
13
13
|
d = ::Puppet::Type::File.new(:name => directory, :ensure => 'directory')
|
14
14
|
d.insync?(d.retrieve)
|
15
15
|
end
|
16
16
|
|
17
|
-
def check_enabled(service)
|
17
|
+
def check_enabled(example, service)
|
18
18
|
s = ::Puppet::Type::Service.new(:name => service, :enable => 'true')
|
19
19
|
s.insync?(s.retrieve)
|
20
20
|
end
|
21
21
|
|
22
|
-
def check_file(file)
|
22
|
+
def check_file(example, file)
|
23
23
|
f = ::Puppet::Type::File.new(:name => file, :ensure => 'file')
|
24
24
|
f.insync?(f.retrieve)
|
25
25
|
end
|
26
26
|
|
27
|
-
def check_group(group)
|
27
|
+
def check_group(example, group)
|
28
28
|
g = ::Puppet::Type::Group.new(:name => group)
|
29
29
|
g_real = g.retrieve
|
30
30
|
if g.provider.exists?
|
@@ -34,12 +34,12 @@ module Serverspec
|
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
-
def check_grouped(file, group)
|
37
|
+
def check_grouped(example, file, group)
|
38
38
|
f = ::Puppet::Type::File.new(:name => file, :group => group)
|
39
39
|
f.insync?(f.retrieve)
|
40
40
|
end
|
41
41
|
|
42
|
-
def check_installed(package)
|
42
|
+
def check_installed(example, package)
|
43
43
|
p = ::Puppet::Type::Package.new(:name => package)
|
44
44
|
p_real = p.retrieve
|
45
45
|
if p.exists?
|
@@ -49,7 +49,7 @@ module Serverspec
|
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
52
|
-
def check_installed_by_gem(package, version)
|
52
|
+
def check_installed_by_gem(example, package, version)
|
53
53
|
p = ::Puppet::Type::Package.new(:name => package, :provider => 'gem',
|
54
54
|
:ensure => version || 'present')
|
55
55
|
p_real = p.retrieve
|
@@ -60,29 +60,29 @@ module Serverspec
|
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
63
|
-
def check_link(link, target)
|
63
|
+
def check_link(example, link, target)
|
64
64
|
f = ::Puppet::Type::File.new(:name => link, :ensure => 'link', :target => target)
|
65
65
|
f.insync?(f.retrieve)
|
66
66
|
end
|
67
67
|
|
68
68
|
# check_listening: inherited
|
69
69
|
|
70
|
-
def check_mode(file, mode)
|
70
|
+
def check_mode(example, file, mode)
|
71
71
|
f = ::Puppet::Type::File.new(:name => file, :mode => mode)
|
72
72
|
f.insync?(f.retrieve)
|
73
73
|
end
|
74
74
|
|
75
|
-
def check_owner(file, owner)
|
75
|
+
def check_owner(example, file, owner)
|
76
76
|
f = ::Puppet::Type::File.new(:name => file, :owner => owner)
|
77
77
|
f.insync?(f.retrieve)
|
78
78
|
end
|
79
79
|
|
80
|
-
def check_running(process)
|
80
|
+
def check_running(example, process)
|
81
81
|
s = ::Puppet::Type::Service.new(:name => process, :ensure => 'running')
|
82
82
|
s.insync?(s.retrieve)
|
83
83
|
end
|
84
84
|
|
85
|
-
def check_user(user)
|
85
|
+
def check_user(example, user)
|
86
86
|
u = ::Puppet::Type::User.new(:name => user)
|
87
87
|
u_real = u.retrieve
|
88
88
|
if u.provider.exists?
|
@@ -22,15 +22,19 @@ module Serverspec
|
|
22
22
|
end
|
23
23
|
channel.exec("#{command}") do |ch, success|
|
24
24
|
abort "FAILED: couldn't execute command (ssh.channel.exec)" if !success
|
25
|
-
channel.on_data do |ch,data|
|
26
|
-
|
25
|
+
channel.on_data do |ch, data|
|
26
|
+
if data =~ /^\[sudo\] password for/
|
27
|
+
channel.send_data "#{RSpec.configuration.sudo_password}\n"
|
28
|
+
else
|
29
|
+
stdout_data += data
|
30
|
+
end
|
27
31
|
end
|
28
32
|
|
29
|
-
channel.on_extended_data do |ch,type,data|
|
33
|
+
channel.on_extended_data do |ch, type, data|
|
30
34
|
stderr_data += data
|
31
35
|
end
|
32
36
|
|
33
|
-
channel.on_request("exit-status") do |ch,data|
|
37
|
+
channel.on_request("exit-status") do |ch, data|
|
34
38
|
exit_code = data.read_long
|
35
39
|
end
|
36
40
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
RSpec::Matchers.define :be_installed do
|
2
2
|
match do |name|
|
3
3
|
if @provider.nil?
|
4
|
-
backend.check_installed(name)
|
4
|
+
backend.check_installed(example, name)
|
5
5
|
else
|
6
6
|
check_method = "check_installed_by_#{@provider}".to_sym
|
7
7
|
|
@@ -9,7 +9,7 @@ RSpec::Matchers.define :be_installed do
|
|
9
9
|
raise ArgumentError.new("`be_installed` matcher doesn't support #{@under}")
|
10
10
|
end
|
11
11
|
|
12
|
-
backend.send(check_method, name, @version)
|
12
|
+
backend.send(check_method, example, name, @version)
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
@@ -8,7 +8,7 @@ Please use be_installed.by('gem') instead.
|
|
8
8
|
***************************************************
|
9
9
|
|
10
10
|
EOF
|
11
|
-
backend.check_installed_by_gem(name, @version)
|
11
|
+
backend.check_installed_by_gem(example, name, @version)
|
12
12
|
end
|
13
13
|
chain :with_version do |version|
|
14
14
|
@version = version
|
@@ -7,9 +7,9 @@ RSpec::Matchers.define :be_running do
|
|
7
7
|
raise ArgumentError.new("`be_running` matcher doesn't support #{@under}")
|
8
8
|
end
|
9
9
|
|
10
|
-
backend.send(check_method, process)
|
10
|
+
backend.send(check_method, example, process)
|
11
11
|
else
|
12
|
-
backend.check_running(process)
|
12
|
+
backend.check_running(example, process)
|
13
13
|
end
|
14
14
|
|
15
15
|
end
|
data/lib/serverspec/setup.rb
CHANGED
data/lib/serverspec/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: serverspec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-04-
|
12
|
+
date: 2013-04-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: net-ssh
|