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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 465a1c6497f6fcbfbd8aca4dc535bbf3890c19c5
4
- data.tar.gz: 70ee36b9d8c6c1480eb3fcf52ed6a088fee2b653
3
+ metadata.gz: 9498cdcc8009438a0e2ea00b06d9b02cf295eb0c
4
+ data.tar.gz: a41a66337d3929e1f940a1b7be962a375d3de319
5
5
  SHA512:
6
- metadata.gz: c6a57a9ad0210c1d1b727455d01b9505c5d1ca94679e6bffce72b8061fc55ab1d4e068ff2eefec46e7c8f3d1d59074ec66ca932b9e1f7e7422da26410a93b88a
7
- data.tar.gz: a2454dc1bed38660a0ac84812383b83586e9accd1572260cc31bac85cbdd415ed0d3a2bc867a37b1f5c91dbe23bd6b105ff7e45ebb9a9a2066134292c50eeb1e
6
+ metadata.gz: 5304cf1b1c87ed692e75976840c85ee83df258d31293ab73dbee915b8cde0f539497c5b2fd8f2af3d2710194e7cd4b309b818c2d713c314007ff9ecf03675b0c
7
+ data.tar.gz: 142748c3e19538fee987c0c1ba6c2afd1cc4640ac1732cf7a60d13f49f5df9c3ee1fc91169fc867277cb7147e2e6588e7a3ef7f2762017f578b88dd372729765
data/README.md CHANGED
@@ -130,12 +130,13 @@ end
130
130
 
131
131
  You can select from:
132
132
 
133
- * Specinfra::Helper::RedHat
134
- * Specinfra::Helper::Debian
135
- * Specinfra::Helper::Gentoo
136
- * Specinfra::Helper::Solaris
137
- * Specinfra::Helper::Darwin
138
- * Specinfra::Helper::Arch
133
+ * SpecInfra::Helper::RedHat
134
+ * SpecInfra::Helper::Debian
135
+ * SpecInfra::Helper::Fedora
136
+ * SpecInfra::Helper::Gentoo
137
+ * SpecInfra::Helper::Solaris
138
+ * SpecInfra::Helper::Darwin
139
+ * SpecInfra::Helper::Arch
139
140
 
140
141
  ## Vagrant support
141
142
 
data/Rakefile CHANGED
@@ -2,31 +2,6 @@ require "bundler/gem_tasks"
2
2
  require "rspec/core/rake_task"
3
3
  require "octorelease"
4
4
 
5
- task :spec => 'spec:all'
6
-
7
- namespace :spec do
8
- oses = %w( darwin debian gentoo plamo redhat aix solaris solaris10 solaris11 smartos windows freebsd freebsd10 arch)
9
- backends = %w( exec ssh cmd winrm powershell )
10
-
11
- task :all => [ oses.map {|os| "spec:#{os}" }, backends, :helper, :unit ].flatten
12
-
13
- oses.each do |os|
14
- RSpec::Core::RakeTask.new(os.to_sym) do |t|
15
- t.pattern = "spec/#{os}/*_spec.rb"
16
- end
17
- end
18
-
19
- backends.each do |backend|
20
- RSpec::Core::RakeTask.new(backend) do |t|
21
- t.pattern = "spec/backend/#{backend.to_s}/*_spec.rb"
22
- end
23
- end
24
-
25
- RSpec::Core::RakeTask.new(:helper) do |t|
26
- t.pattern = "spec/helper/*_spec.rb"
27
- end
28
-
29
- RSpec::Core::RakeTask.new(:unit) do |t|
30
- t.pattern = "spec/unit/*_spec.rb"
31
- end
5
+ RSpec::Core::RakeTask.new('spec') do |t|
6
+ t.pattern = 'spec/*/*_spec.rb'
32
7
  end
@@ -1,5 +1,4 @@
1
1
  require 'serverspec/helper/os'
2
- require 'serverspec/helper/backend'
3
2
 
4
3
  # Subject type helper
5
4
  require 'serverspec/helper/type'
@@ -6,11 +6,13 @@ module Serverspec
6
6
  'Arch',
7
7
  'Darwin',
8
8
  'Debian',
9
+ 'Fedora',
9
10
  'FreeBSD',
10
11
  'FreeBSD10',
11
12
  'Gentoo',
12
13
  'Plamo',
13
14
  'RedHat',
15
+ 'RedHat7',
14
16
  'SmartOS',
15
17
  'Solaris',
16
18
  'Solaris10',
@@ -5,7 +5,7 @@ module Serverspec
5
5
  base cgroup command cron default_gateway file group host iis_website iis_app_pool interface
6
6
  ipfilter ipnat iptables kernel_module linux_kernel_parameter lxc mail_alias
7
7
  package php_config port process routing_table selinux service user yumrepo
8
- windows_feature windows_hot_fix windows_registry_key zfs
8
+ windows_feature windows_hot_fix windows_registry_key windows_scheduled_task zfs
9
9
  )
10
10
 
11
11
  types.each {|type| require "serverspec/type/#{type}" }
@@ -14,11 +14,11 @@ module Serverspec
14
14
  end
15
15
 
16
16
  if @backend_type == 'Ssh'
17
- print "Vagrant instance y/n: "
17
+ print 'Vagrant instance y/n: '
18
18
  @vagrant = $stdin.gets.chomp
19
19
  if @vagrant =~ (/(true|t|yes|y|1)$/i)
20
20
  @vagrant = true
21
- print "Auto-configure Vagrant from Vagrantfile? y/n: "
21
+ print 'Auto-configure Vagrant from Vagrantfile? y/n: '
22
22
  auto_config = $stdin.gets.chomp
23
23
  if auto_config =~ (/(true|t|yes|y|1)$/i)
24
24
  auto_vagrant_configuration
@@ -35,7 +35,7 @@ module Serverspec
35
35
  @hostname = 'localhost'
36
36
  end
37
37
 
38
- [ 'spec', "spec/#{@hostname}" ].each { |dir| safe_mkdir(dir) }
38
+ ['spec', "spec/#{@hostname}"].each { |dir| safe_mkdir(dir) }
39
39
  safe_create_spec
40
40
  safe_create_spec_helper
41
41
  safe_create_rakefile
@@ -55,7 +55,7 @@ EOF
55
55
  num = $stdin.gets.to_i - 1
56
56
  puts
57
57
 
58
- @os_type = [ 'UN*X', 'Windows' ][num] || 'UN*X'
58
+ @os_type = ['UN*X', 'Windows'][num] || 'UN*X'
59
59
  end
60
60
 
61
61
  def self.ask_unix_backend
@@ -71,7 +71,7 @@ EOF
71
71
  num = $stdin.gets.to_i - 1
72
72
  puts
73
73
 
74
- @backend_type = [ 'Ssh', 'Exec' ][num] || 'Exec'
74
+ @backend_type = ['Ssh', 'Exec'][num] || 'Exec'
75
75
  end
76
76
 
77
77
  def self.ask_windows_backend
@@ -87,7 +87,7 @@ EOF
87
87
  num = $stdin.gets.to_i - 1
88
88
  puts
89
89
 
90
- @backend_type = [ 'WinRM', 'Cmd' ][num] || 'Exec'
90
+ @backend_type = ['WinRM', 'Cmd'][num] || 'Exec'
91
91
  end
92
92
 
93
93
  def self.safe_create_spec
@@ -138,7 +138,6 @@ EOF
138
138
  end
139
139
 
140
140
  def self.safe_create_spec_helper
141
- requirements = []
142
141
  content = ERB.new(spec_helper_template, nil, '-').result(binding)
143
142
  if File.exists? 'spec/spec_helper.rb'
144
143
  old_content = File.read('spec/spec_helper.rb')
@@ -167,7 +166,7 @@ task :default => :spec
167
166
  if File.exists? 'Rakefile'
168
167
  old_content = File.read('Rakefile')
169
168
  if old_content != content
170
- $stderr.puts "!! Rakefile already exists and differs from template"
169
+ $stderr.puts '!! Rakefile already exists and differs from template'
171
170
  end
172
171
  else
173
172
  File.open('Rakefile', 'w') do |f|
@@ -179,7 +178,7 @@ task :default => :spec
179
178
 
180
179
  def self.find_vagrantfile
181
180
  Pathname.new(Dir.pwd).ascend do |dir|
182
- path = File.expand_path("Vagrantfile", dir)
181
+ path = File.expand_path('Vagrantfile', dir)
183
182
  return path if File.exists?(path)
184
183
  end
185
184
  nil
@@ -199,16 +198,16 @@ task :default => :spec
199
198
  @hostname = list_of_vms[0]
200
199
  else
201
200
  list_of_vms.each_with_index { |vm, index | puts "#{index}) #{vm}\n" }
202
- print "Choose a VM from the Vagrantfile: "
201
+ print 'Choose a VM from the Vagrantfile: '
203
202
  chosen_vm = $stdin.gets.chomp
204
203
  @hostname = list_of_vms[chosen_vm.to_i]
205
204
  end
206
205
  else
207
- $stderr.puts "Vagrant status error - Check your Vagrantfile or .vagrant"
206
+ $stderr.puts 'Vagrant status error - Check your Vagrantfile or .vagrant'
208
207
  exit 1
209
208
  end
210
209
  else
211
- $stderr.puts "Vagrantfile not found in directory!"
210
+ $stderr.puts 'Vagrantfile not found in directory!'
212
211
  exit 1
213
212
  end
214
213
  end
@@ -2,7 +2,8 @@ module Serverspec
2
2
  module Type
3
3
  class Base
4
4
  def initialize(name=nil)
5
- @name = name
5
+ @name = name
6
+ @runner = Specinfra::Runner.instance
6
7
  end
7
8
 
8
9
  def to_s
@@ -8,7 +8,7 @@ module Serverspec
8
8
  self
9
9
  else
10
10
  param = "#{@subsystem}.#{meth.to_s}"
11
- ret = backend.run_command("cgget -n -r #{param} #{@name} | awk '{print $2}'")
11
+ ret = @runner.run_command("cgget -n -r #{param} #{@name} | awk '{print $2}'")
12
12
  val = ret.stdout.strip
13
13
  val = val.to_i if val.match(/^\d+$/)
14
14
  val
@@ -36,7 +36,7 @@ module Serverspec
36
36
  private
37
37
 
38
38
  def command_result()
39
- @command_result ||= backend.run_command(@name)
39
+ @command_result ||= @runner.run_command(@name)
40
40
  end
41
41
  end
42
42
  end
@@ -2,7 +2,7 @@ module Serverspec
2
2
  module Type
3
3
  class Cron < Base
4
4
  def has_entry?(user, entry)
5
- backend.check_cron_entry(user, entry)
5
+ @runner.check_cron_entry(user, entry)
6
6
  end
7
7
  def to_s
8
8
  'Cron'
@@ -2,13 +2,13 @@ module Serverspec
2
2
  module Type
3
3
  class DefaultGateway < Base
4
4
  def ipaddress
5
- ret = backend.run_command(commands.check_routing_table('default'))
5
+ ret = @runner.run_command(commands.check_routing_table('default'))
6
6
  ret.stdout =~ /^(\S+)(?: via (\S+))? dev (\S+).+(?:\r)?\n(?:default via (\S+))?/
7
7
  $2 ? $2 : $4
8
8
  end
9
9
 
10
10
  def interface
11
- ret = backend.run_command(commands.check_routing_table('default'))
11
+ ret = @runner.run_command(commands.check_routing_table('default'))
12
12
  ret.stdout =~ /^(\S+)(?: via (\S+))? dev (\S+).+(?:\r)?\n(?:default via (\S+))?/
13
13
  $3
14
14
  end
@@ -4,94 +4,94 @@ module Serverspec
4
4
  attr_accessor :content
5
5
 
6
6
  def file?
7
- backend.check_file(@name)
7
+ @runner.check_file(@name)
8
8
  end
9
9
 
10
10
  def socket?
11
- backend.check_socket(@name)
11
+ @runner.check_socket(@name)
12
12
  end
13
13
 
14
14
  def directory?
15
- backend.check_directory(@name)
15
+ @runner.check_directory(@name)
16
16
  end
17
17
 
18
18
  def contain(pattern, from, to)
19
19
  if pattern.is_a?(Array)
20
- backend.check_file_contain_lines(@name, pattern, from, to)
20
+ @runner.check_file_contain_lines(@name, pattern, from, to)
21
21
  else
22
22
  if (from || to).nil?
23
- backend.check_file_contain(@name, pattern)
23
+ @runner.check_file_contain(@name, pattern)
24
24
  else
25
- backend.check_file_contain_within(@name, pattern, from, to)
25
+ @runner.check_file_contain_within(@name, pattern, from, to)
26
26
  end
27
27
  end
28
28
  end
29
29
 
30
30
  def mode?(mode)
31
- backend.check_mode(@name, mode)
31
+ @runner.check_mode(@name, mode)
32
32
  end
33
33
 
34
34
  def owned_by?(owner)
35
- backend.check_owner(@name, owner)
35
+ @runner.check_owner(@name, owner)
36
36
  end
37
37
 
38
38
  def grouped_into?(group)
39
- backend.check_grouped(@name, group)
39
+ @runner.check_grouped(@name, group)
40
40
  end
41
41
 
42
42
  def linked_to?(target)
43
- backend.check_link(@name, target)
43
+ @runner.check_link(@name, target)
44
44
  end
45
45
 
46
46
  def readable?(by_whom, by_user)
47
47
  if by_user != nil
48
- backend.check_access_by_user(@name, by_user, 'r')
48
+ @runner.check_access_by_user(@name, by_user, 'r')
49
49
  else
50
- backend.check_readable(@name, by_whom)
50
+ @runner.check_readable(@name, by_whom)
51
51
  end
52
52
  end
53
53
 
54
54
  def writable?(by_whom, by_user)
55
55
  if by_user != nil
56
- backend.check_access_by_user(@name, by_user, 'w')
56
+ @runner.check_access_by_user(@name, by_user, 'w')
57
57
  else
58
- backend.check_writable(@name, by_whom)
58
+ @runner.check_writable(@name, by_whom)
59
59
  end
60
60
  end
61
61
 
62
62
  def executable?(by_whom, by_user)
63
63
  if by_user != nil
64
- backend.check_access_by_user(@name, by_user, 'x')
64
+ @runner.check_access_by_user(@name, by_user, 'x')
65
65
  else
66
- backend.check_executable(@name, by_whom)
66
+ @runner.check_executable(@name, by_whom)
67
67
  end
68
68
  end
69
69
 
70
70
  def mounted?(attr, only_with)
71
- backend.check_mounted(@name, attr, only_with)
71
+ @runner.check_mounted(@name, attr, only_with)
72
72
  end
73
73
 
74
74
  def match_checksum(checksum)
75
- backend.check_file_checksum(@name, checksum)
75
+ @runner.check_file_checksum(@name, checksum)
76
76
  end
77
77
 
78
78
  def match_md5checksum(md5sum)
79
- backend.check_file_md5checksum(@name, md5sum)
79
+ @runner.check_file_md5checksum(@name, md5sum)
80
80
  end
81
81
 
82
82
  def match_sha256checksum(sha256sum)
83
- backend.check_file_sha256checksum(@name, sha256sum)
83
+ @runner.check_file_sha256checksum(@name, sha256sum)
84
84
  end
85
85
 
86
86
  def content
87
87
  if @content.nil?
88
- @content = backend.run_command(commands.get_file_content(@name)).stdout
88
+ @content = @runner.run_command(commands.get_file_content(@name)).stdout
89
89
  end
90
90
  @content
91
91
  end
92
92
 
93
93
  def version?(version)
94
- backend.check_file_version(@name, version)
94
+ @runner.check_file_version(@name, version)
95
95
  end
96
96
  end
97
97
  end
@@ -2,11 +2,11 @@ module Serverspec
2
2
  module Type
3
3
  class Group < Base
4
4
  def exists?
5
- backend.check_group(@name)
5
+ @runner.check_group(@name)
6
6
  end
7
7
 
8
8
  def has_gid?(gid)
9
- backend.check_gid(@name, gid)
9
+ @runner.check_gid(@name, gid)
10
10
  end
11
11
  end
12
12
  end
@@ -2,15 +2,15 @@ module Serverspec
2
2
  module Type
3
3
  class Host < Base
4
4
  def resolvable?(type)
5
- backend.check_resolvable(@name, type)
5
+ @runner.check_resolvable(@name, type)
6
6
  end
7
7
 
8
8
  def reachable?(port, proto, timeout)
9
- backend.check_reachable(@name, port, proto, timeout)
9
+ @runner.check_reachable(@name, port, proto, timeout)
10
10
  end
11
11
 
12
12
  def ipaddress
13
- backend.get_ipaddress_of_host(@name).stdout.strip
13
+ @runner.get_ipaddress_of_host(@name).stdout.strip
14
14
  end
15
15
  end
16
16
  end
@@ -2,11 +2,11 @@ module Serverspec
2
2
  module Type
3
3
  class IisAppPool < Base
4
4
  def exists?()
5
- backend.check_iis_app_pool(@name)
5
+ @runner.check_iis_app_pool(@name)
6
6
  end
7
7
 
8
8
  def has_dotnet_version?(dotnet)
9
- backend.check_iis_app_pool_dotnet(@name, dotnet)
9
+ @runner.check_iis_app_pool_dotnet(@name, dotnet)
10
10
  end
11
11
 
12
12
  def to_s
@@ -3,23 +3,23 @@ module Serverspec
3
3
  class IisWebsite < Base
4
4
 
5
5
  def exists?()
6
- backend.check_iis_website_installed(@name)
6
+ @runner.check_iis_website_installed(@name)
7
7
  end
8
8
 
9
9
  def enabled?()
10
- backend.check_iis_website_enabled(@name)
10
+ @runner.check_iis_website_enabled(@name)
11
11
  end
12
12
 
13
13
  def running?()
14
- backend.check_iis_website_running(@name)
14
+ @runner.check_iis_website_running(@name)
15
15
  end
16
16
 
17
17
  def in_app_pool?(app_pool)
18
- backend.check_iis_website_app_pool(@name, app_pool)
18
+ @runner.check_iis_website_app_pool(@name, app_pool)
19
19
  end
20
20
 
21
21
  def has_physical_path?(path)
22
- backend.check_iis_website_path(@name, path)
22
+ @runner.check_iis_website_path(@name, path)
23
23
  end
24
24
 
25
25
  def to_s