serverspec 2.0.0.beta2 → 2.0.0.beta3

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.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +7 -6
  3. data/Rakefile +2 -27
  4. data/lib/serverspec/helper.rb +0 -1
  5. data/lib/serverspec/helper/os.rb +2 -0
  6. data/lib/serverspec/helper/type.rb +1 -1
  7. data/lib/serverspec/setup.rb +11 -12
  8. data/lib/serverspec/type/base.rb +2 -1
  9. data/lib/serverspec/type/cgroup.rb +1 -1
  10. data/lib/serverspec/type/command.rb +1 -1
  11. data/lib/serverspec/type/cron.rb +1 -1
  12. data/lib/serverspec/type/default_gateway.rb +2 -2
  13. data/lib/serverspec/type/file.rb +22 -22
  14. data/lib/serverspec/type/group.rb +2 -2
  15. data/lib/serverspec/type/host.rb +3 -3
  16. data/lib/serverspec/type/iis_app_pool.rb +2 -2
  17. data/lib/serverspec/type/iis_website.rb +5 -5
  18. data/lib/serverspec/type/interface.rb +2 -2
  19. data/lib/serverspec/type/ipfilter.rb +1 -1
  20. data/lib/serverspec/type/ipnat.rb +1 -1
  21. data/lib/serverspec/type/iptables.rb +1 -1
  22. data/lib/serverspec/type/kernel_module.rb +1 -1
  23. data/lib/serverspec/type/linux_kernel_parameter.rb +1 -1
  24. data/lib/serverspec/type/lxc.rb +2 -2
  25. data/lib/serverspec/type/mail_alias.rb +1 -1
  26. data/lib/serverspec/type/package.rb +4 -4
  27. data/lib/serverspec/type/php_config.rb +1 -1
  28. data/lib/serverspec/type/port.rb +2 -2
  29. data/lib/serverspec/type/process.rb +2 -2
  30. data/lib/serverspec/type/routing_table.rb +1 -1
  31. data/lib/serverspec/type/selinux.rb +3 -3
  32. data/lib/serverspec/type/service.rb +7 -8
  33. data/lib/serverspec/type/user.rb +6 -6
  34. data/lib/serverspec/type/windows_feature.rb +1 -1
  35. data/lib/serverspec/type/windows_hot_fix.rb +1 -1
  36. data/lib/serverspec/type/windows_registry_key.rb +4 -4
  37. data/lib/serverspec/type/windows_scheduled_task.rb +9 -0
  38. data/lib/serverspec/type/yumrepo.rb +2 -2
  39. data/lib/serverspec/type/zfs.rb +2 -2
  40. data/lib/serverspec/version.rb +1 -1
  41. data/spec/spec_helper.rb +2 -33
  42. data/spec/type/cgroup_spec.rb +13 -0
  43. data/spec/type/command_spec.rb +64 -0
  44. data/spec/type/cron_spec.rb +19 -0
  45. data/spec/type/default_gateway_spec.rb +14 -0
  46. data/spec/type/file_spec.rb +392 -0
  47. data/spec/type/group_spec.rb +19 -0
  48. data/spec/type/host_spec.rb +56 -0
  49. data/spec/type/interface_spec.rb +21 -0
  50. data/spec/type/iptables_spec.rb +19 -0
  51. data/spec/type/kernel_module_spec.rb +11 -0
  52. data/spec/type/linux_kernel_parameter_spec.rb +33 -0
  53. data/spec/type/lxc_spec.rb +20 -0
  54. data/spec/type/mail_alias_spec.rb +11 -0
  55. data/spec/type/package_spec.rb +104 -0
  56. data/spec/type/php_config_spec.rb +33 -0
  57. data/spec/type/port_spec.rb +27 -0
  58. data/spec/type/process_spec.rb +35 -0
  59. data/spec/type/routing_table_spec.rb +118 -0
  60. data/spec/type/selinux_spec.rb +15 -0
  61. data/spec/type/service_spec.rb +94 -0
  62. data/spec/type/user_spec.rb +51 -0
  63. data/spec/type/yumrepo_spec.rb +25 -0
  64. data/spec/type/zfs_spec.rb +15 -0
  65. metadata +49 -3
  66. data/lib/serverspec/helper/backend.rb +0 -11
@@ -2,14 +2,14 @@ module Serverspec
2
2
  module Type
3
3
  class Interface < Base
4
4
  def speed
5
- ret = backend.run_command(commands.get_interface_speed_of(@name))
5
+ ret = @runner.run_command(commands.get_interface_speed_of(@name))
6
6
  val = ret.stdout.strip
7
7
  val = val.to_i if val.match(/^\d+$/)
8
8
  val
9
9
  end
10
10
 
11
11
  def has_ipv4_address?(ip_address)
12
- backend.check_ipv4_address(@name, ip_address)
12
+ @runner.check_ipv4_address(@name, ip_address)
13
13
  end
14
14
  end
15
15
  end
@@ -2,7 +2,7 @@ module Serverspec
2
2
  module Type
3
3
  class Ipfilter < Base
4
4
  def has_rule?(rule)
5
- backend.check_ipfilter_rule(rule)
5
+ @runner.check_ipfilter_rule(rule)
6
6
  end
7
7
 
8
8
  def to_s
@@ -2,7 +2,7 @@ module Serverspec
2
2
  module Type
3
3
  class Ipnat < Base
4
4
  def has_rule?(rule)
5
- backend.check_ipnat_rule(rule)
5
+ @runner.check_ipnat_rule(rule)
6
6
  end
7
7
 
8
8
  def to_s
@@ -2,7 +2,7 @@ module Serverspec
2
2
  module Type
3
3
  class Iptables < Base
4
4
  def has_rule?(rule, table, chain)
5
- backend.check_iptables_rule(rule, table, chain)
5
+ @runner.check_iptables_rule(rule, table, chain)
6
6
  end
7
7
 
8
8
  def to_s
@@ -2,7 +2,7 @@ module Serverspec
2
2
  module Type
3
3
  class KernelModule < Base
4
4
  def loaded?
5
- backend.check_kernel_module_loaded(@name)
5
+ @runner.check_kernel_module_loaded(@name)
6
6
  end
7
7
  end
8
8
  end
@@ -2,7 +2,7 @@ module Serverspec
2
2
  module Type
3
3
  class LinuxKernelParameter < Base
4
4
  def value
5
- ret = backend.run_command("/sbin/sysctl -q -n #{@name}")
5
+ ret = @runner.run_command("/sbin/sysctl -q -n #{@name}")
6
6
  val = ret.stdout.strip
7
7
  val = val.to_i if val.match(/^\d+$/)
8
8
  val
@@ -2,11 +2,11 @@ module Serverspec
2
2
  module Type
3
3
  class Lxc < Base
4
4
  def exists?
5
- backend.check_container(@name)
5
+ @runner.check_container(@name)
6
6
  end
7
7
 
8
8
  def running?
9
- backend.check_container_running(@name)
9
+ @runner.check_container_running(@name)
10
10
  end
11
11
 
12
12
  def to_s
@@ -2,7 +2,7 @@ module Serverspec
2
2
  module Type
3
3
  class MailAlias < Base
4
4
  def aliased_to?(target)
5
- backend.check_mail_alias(@name, target)
5
+ @runner.check_mail_alias(@name, target)
6
6
  end
7
7
  end
8
8
  end
@@ -3,20 +3,20 @@ module Serverspec
3
3
  class Package < Base
4
4
  def installed?(provider, version)
5
5
  if provider.nil?
6
- backend.check_installed(@name, version)
6
+ @runner.check_installed(@name, version)
7
7
  else
8
8
  check_method = "check_installed_by_#{provider}".to_sym
9
9
 
10
- unless backend.respond_to?(check_method) || commands.respond_to?(check_method)
10
+ unless @runner.respond_to?(check_method) || commands.respond_to?(check_method)
11
11
  raise ArgumentError.new("`be_installed` matcher doesn't support #{provider}")
12
12
  end
13
13
 
14
- backend.send(check_method, @name, version)
14
+ @runner.send(check_method, @name, version)
15
15
  end
16
16
  end
17
17
 
18
18
  def version
19
- ret = backend.run_command(commands.get_package_version(@name)).stdout.strip
19
+ ret = @runner.run_command(commands.get_package_version(@name)).stdout.strip
20
20
  if ret.empty?
21
21
  nil
22
22
  else
@@ -2,7 +2,7 @@ module Serverspec
2
2
  module Type
3
3
  class PhpConfig < Base
4
4
  def value
5
- ret = backend.run_command("php -r 'echo get_cfg_var( \"#{@name}\" );'")
5
+ ret = @runner.run_command("php -r 'echo get_cfg_var( \"#{@name}\" );'")
6
6
  val = ret.stdout
7
7
  val = val.to_i if val.match(/^\d+$/)
8
8
  val
@@ -8,9 +8,9 @@ module Serverspec
8
8
  raise ArgumentError.new("`be_listening` matcher doesn't support #{protocol}")
9
9
  end
10
10
 
11
- backend.check_listening_with_protocol(@name, protocol)
11
+ @runner.check_listening_with_protocol(@name, protocol)
12
12
  else
13
- backend.check_listening(@name)
13
+ @runner.check_listening(@name)
14
14
  end
15
15
  end
16
16
  end
@@ -2,7 +2,7 @@ module Serverspec
2
2
  module Type
3
3
  class Process < Base
4
4
  def running?
5
- pid = backend.run_command(commands.get_process(@name, :format => "pid=")).stdout
5
+ pid = @runner.run_command(commands.get_process(@name, :format => "pid=")).stdout
6
6
  not pid.empty?
7
7
  end
8
8
 
@@ -19,7 +19,7 @@ module Serverspec
19
19
  end
20
20
 
21
21
  def get_column(keyword)
22
- ret = backend.get_process(@name, :format => "#{keyword}=")
22
+ ret = @runner.get_process(@name, :format => "#{keyword}=")
23
23
  val = ret.stdout.strip
24
24
  val = val.to_i if val.match(/^\d+$/)
25
25
  val
@@ -2,7 +2,7 @@ module Serverspec
2
2
  module Type
3
3
  class RoutingTable < Base
4
4
  def has_entry?(entry)
5
- backend.check_routing_table(entry)
5
+ @runner.check_routing_table(entry)
6
6
  end
7
7
 
8
8
  def to_s
@@ -2,15 +2,15 @@ module Serverspec
2
2
  module Type
3
3
  class Selinux < Base
4
4
  def disabled?
5
- backend.check_selinux('disabled')
5
+ @runner.check_selinux('disabled')
6
6
  end
7
7
 
8
8
  def enforcing?
9
- backend.check_selinux('enforcing')
9
+ @runner.check_selinux('enforcing')
10
10
  end
11
11
 
12
12
  def permissive?
13
- backend.check_selinux('permissive')
13
+ @runner.check_selinux('permissive')
14
14
  end
15
15
 
16
16
  def to_s
@@ -2,15 +2,15 @@ module Serverspec
2
2
  module Type
3
3
  class Service < Base
4
4
  def enabled?(level=3)
5
- backend.check_enabled(@name, level)
5
+ @runner.check_enabled(@name, level)
6
6
  end
7
7
 
8
8
  def installed?(name, version)
9
- backend.check_service_installed(@name)
9
+ @runner.check_service_installed(@name)
10
10
  end
11
11
 
12
12
  def has_start_mode?(mode)
13
- backend.check_service_start_mode(@name, mode)
13
+ @runner.check_service_start_mode(@name, mode)
14
14
  end
15
15
 
16
16
  def running?(under)
@@ -21,9 +21,9 @@ module Serverspec
21
21
  raise ArgumentError.new("`be_running` matcher doesn't support #{under}")
22
22
  end
23
23
 
24
- backend.send(check_method, @name)
24
+ @runner.send(check_method, @name)
25
25
  else
26
- backend.check_running(@name)
26
+ @runner.check_running(@name)
27
27
  end
28
28
  end
29
29
 
@@ -32,12 +32,11 @@ module Serverspec
32
32
  unless monitor && commands.respond_to?(check_method)
33
33
  raise ArgumentError.new("`be_monitored_by` matcher doesn't support #{monitor}")
34
34
  end
35
-
36
- backend.send(check_method, @name)
35
+ res = @runner.send(check_method, @name)
37
36
  end
38
37
 
39
38
  def has_property?(property)
40
- backend.check_svcprops(@name, property)
39
+ @runner.check_svcprops(@name, property)
41
40
  end
42
41
  end
43
42
  end
@@ -2,27 +2,27 @@ module Serverspec
2
2
  module Type
3
3
  class User < Base
4
4
  def exists?
5
- backend.check_user(@name)
5
+ @runner.check_user(@name)
6
6
  end
7
7
 
8
8
  def belongs_to_group?(group)
9
- backend.check_belonging_group(@name, group)
9
+ @runner.check_belonging_group(@name, group)
10
10
  end
11
11
 
12
12
  def has_uid?(uid)
13
- backend.check_uid(@name, uid)
13
+ @runner.check_uid(@name, uid)
14
14
  end
15
15
 
16
16
  def has_home_directory?(path)
17
- backend.check_home_directory(@name, path)
17
+ @runner.check_home_directory(@name, path)
18
18
  end
19
19
 
20
20
  def has_login_shell?(shell)
21
- backend.check_login_shell(@name, shell)
21
+ @runner.check_login_shell(@name, shell)
22
22
  end
23
23
 
24
24
  def has_authorized_key?(key)
25
- backend.check_authorized_key(@name, key)
25
+ @runner.check_authorized_key(@name, key)
26
26
  end
27
27
  end
28
28
  end
@@ -2,7 +2,7 @@ module Serverspec
2
2
  module Type
3
3
  class WindowsFeature < Base
4
4
  def installed?(provider, version)
5
- backend.check_windows_feature_enabled(@name, provider)
5
+ @runner.check_windows_feature_enabled(@name, provider)
6
6
  end
7
7
  end
8
8
  end
@@ -2,7 +2,7 @@ module Serverspec
2
2
  module Type
3
3
  class WindowsHotFix < Base
4
4
  def installed?(provider, version)
5
- backend.check_windows_hot_fix_installed(@name, version)
5
+ @runner.check_windows_hot_fix_installed(@name, version)
6
6
  end
7
7
  end
8
8
  end
@@ -2,19 +2,19 @@ module Serverspec
2
2
  module Type
3
3
  class WindowsRegistryKey < Base
4
4
  def exists?
5
- backend.check_registry_key(@name)
5
+ @runner.check_registry_key(@name)
6
6
  end
7
7
 
8
8
  def has_property?(property_name, property_type = :type_string)
9
- backend.check_registry_key(@name, {:name => property_name, :type => property_type})
9
+ @runner.check_registry_key(@name, {:name => property_name, :type => property_type})
10
10
  end
11
11
 
12
12
  def has_value?(value)
13
- backend.check_registry_key(@name, {:name => '', :type => :type_string, :value => value})
13
+ @runner.check_registry_key(@name, {:name => '', :type => :type_string, :value => value})
14
14
  end
15
15
 
16
16
  def has_property_value?(property_name, property_type, value)
17
- backend.check_registry_key(@name, {:name => property_name, :type => property_type, :value => value})
17
+ @runner.check_registry_key(@name, {:name => property_name, :type => property_type, :value => value})
18
18
  end
19
19
  end
20
20
  end
@@ -0,0 +1,9 @@
1
+ module Serverspec
2
+ module Type
3
+ class WindowsScheduledTask < Base
4
+ def exists?
5
+ @runner.check_scheduled_task(@name)
6
+ end
7
+ end
8
+ end
9
+ end
@@ -2,11 +2,11 @@ module Serverspec
2
2
  module Type
3
3
  class Yumrepo < Base
4
4
  def exists?
5
- backend.check_yumrepo(@name)
5
+ @runner.check_yumrepo(@name)
6
6
  end
7
7
 
8
8
  def enabled?
9
- backend.check_yumrepo_enabled(@name)
9
+ @runner.check_yumrepo_enabled(@name)
10
10
  end
11
11
  end
12
12
  end
@@ -2,11 +2,11 @@ module Serverspec
2
2
  module Type
3
3
  class Zfs < Base
4
4
  def exists?
5
- backend.check_zfs(@name)
5
+ @runner.check_zfs(@name)
6
6
  end
7
7
 
8
8
  def has_property?(property)
9
- backend.check_zfs(@name, property)
9
+ @runner.check_zfs(@name, property)
10
10
  end
11
11
 
12
12
  def to_s
@@ -1,3 +1,3 @@
1
1
  module Serverspec
2
- VERSION = "2.0.0.beta2"
2
+ VERSION = "2.0.0.beta3"
3
3
  end
data/spec/spec_helper.rb CHANGED
@@ -6,47 +6,16 @@ include Specinfra::Helper::Exec
6
6
 
7
7
  PROJECT_ROOT = (Pathname.new(File.dirname(__FILE__)) + '..').expand_path
8
8
 
9
- Dir[PROJECT_ROOT.join("spec/support/**/*.rb")].each { |file| require(file) }
10
-
11
-
12
9
  module Specinfra
13
10
  module Backend
14
- module TestCommandRunner
15
- def do_run cmd
16
- if @example
17
- @example.metadata[:subject].set_command(cmd)
18
- end
19
-
11
+ class Exec < Base
12
+ def run_command cmd
20
13
  CommandResult.new({
21
14
  :stdout => ::Specinfra.configuration.stdout,
22
15
  :stderr => ::Specinfra.configuration.stderr,
23
16
  :exit_status => cmd =~ /invalid/ ? 1 : 0,
24
17
  :exit_signal => nil,
25
18
  })
26
-
27
- end
28
- end
29
- [Exec, Ssh, Cmd, WinRM].each do |clz|
30
- clz.class_eval do
31
- include TestCommandRunner
32
- def run_command(cmd)
33
- cmd = build_command(cmd.to_s)
34
- cmd = add_pre_command(cmd)
35
- do_run cmd
36
- end
37
- end
38
- end
39
- end
40
- end
41
-
42
- module Serverspec
43
- module Type
44
- class Base
45
- def set_command(command)
46
- @command = command
47
- end
48
- def command
49
- @command
50
19
  end
51
20
  end
52
21
  end
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+
3
+ include Specinfra::Helper::RedHat
4
+
5
+ describe cgroup('group1') do
6
+ let(:stdout) { "1\r\n" }
7
+ its('cpuset.cpus') { should eq 1 }
8
+ end
9
+
10
+ describe cgroup('group1') do
11
+ let(:stdout) { "1\r\n" }
12
+ its('cpuset.cpus') { should_not eq 0 }
13
+ end
@@ -0,0 +1,64 @@
1
+ require 'spec_helper'
2
+
3
+ include Specinfra::Helper::RedHat
4
+
5
+ =begin
6
+ describe command('cat /etc/resolv.conf') do
7
+ let(:stdout) { "nameserver 127.0.0.1\r\n" }
8
+ it { should return_stdout("nameserver 127.0.0.1") }
9
+ end
10
+
11
+ describe 'complete matching of stdout' do
12
+ context command('cat /etc/resolv.conf') do
13
+ let(:stdout) { "foocontent-should-be-includedbar\r\n" }
14
+ it { should_not return_stdout('content-should-be-included') }
15
+ end
16
+ end
17
+
18
+ describe 'regexp matching of stdout' do
19
+ context command('cat /etc/resolv.conf') do
20
+ let(:stdout) { "nameserver 127.0.0.1\r\n" }
21
+ it { should return_stdout(/127\.0\.0\.1/) }
22
+ end
23
+ end
24
+
25
+ describe command('cat /etc/resolv.conf') do
26
+ let(:stderr) { "No such file or directory\r\n" }
27
+ it { should return_stderr("No such file or directory") }
28
+ end
29
+
30
+ describe 'complete matching of stderr' do
31
+ context command('cat /etc/resolv.conf') do
32
+ let(:stderr) { "No such file or directory\r\n" }
33
+ it { should_not return_stderr('file') }
34
+ end
35
+ end
36
+
37
+ describe 'regexp matching of stderr' do
38
+ context command('cat /etc/resolv.conf') do
39
+ let(:stderr) { "No such file or directory\r\n" }
40
+ it { should return_stderr(/file/) }
41
+ end
42
+ end
43
+
44
+ describe command('cat /etc/resolv.conf') do
45
+ it { should return_exit_status 0 }
46
+ end
47
+ =end
48
+
49
+ describe command('ls -al /') do
50
+ let(:stdout) { <<EOF
51
+ total 88
52
+ drwxr-xr-x 23 root root 4096 Oct 10 17:19 .
53
+ drwxr-xr-x 23 root root 4096 Oct 10 17:19 ..
54
+ drwxr-xr-x 2 root root 4096 Sep 11 16:43 bin
55
+ drwxr-xr-x 3 root root 4096 Sep 23 18:14 boot
56
+ drwxr-xr-x 14 root root 4260 Oct 14 16:14 dev
57
+ drwxr-xr-x 104 root root 4096 Oct 14 17:34 etc
58
+ drwxr-xr-x 8 root root 4096 Oct 1 15:09 home
59
+ EOF
60
+ }
61
+
62
+ its(:stdout) { should match /bin/ }
63
+ its(:stdout) { should eq stdout }
64
+ end