serverspec 2.0.0.beta2 → 2.0.0.beta3

Sign up to get free protection for your applications and to get access to all the features.
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