chefspec 3.0.0.beta.3 → 3.0.0.beta.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7308d36040d62aec7a7c6cf1f8db5a055bc443db
4
- data.tar.gz: 2431011f1b6831872267062ebd68bd8081858bb3
3
+ metadata.gz: de6569c7801bd9192460934175605ba237962958
4
+ data.tar.gz: 005ba7b59b0d660be5b71565c4a8fa0c0edeb719
5
5
  SHA512:
6
- metadata.gz: 1ab357238fb71ea97cda205efa9fcf964ca892ac072ab551c4a7476269580f3531edde90bb53f52334cde560e6a1195e9f7c736eade511048907c221eb227656
7
- data.tar.gz: e56256e20086ca15252e5dea80822b7d1545b7aa8c28e22c825c165a76d428f8d05a826750fba45bb5050ae7de64b3ab6a73cd25c1839a44dadfa10807ebbe8b
6
+ metadata.gz: b17504fd6a5fc2642a43a47a720cfedaac7cc0553efe9c0b243c3aac2cf0fc41c962807eb1e9531981bb89728535823f72d7c4375662900c6849b166cb7149db
7
+ data.tar.gz: cec924c49870eb6afb3fc9756fc7e4acf8cf5d44a8da80b7034e91f236ef05e26e334023ec7058058f47bf1f7b83fda23b4600f7e78b2e2404d26c4d52d27793
data/lib/chefspec.rb CHANGED
@@ -4,7 +4,6 @@ require_relative 'chefspec/extensions/chef/client'
4
4
  require_relative 'chefspec/extensions/chef/conditional'
5
5
  require_relative 'chefspec/extensions/chef/data_query'
6
6
  require_relative 'chefspec/extensions/chef/lwrp_base'
7
- require_relative 'chefspec/extensions/chef/provider'
8
7
  require_relative 'chefspec/extensions/chef/resource'
9
8
  require_relative 'chefspec/extensions/chef/securable'
10
9
 
@@ -26,7 +25,6 @@ require_relative 'chefspec/formatter'
26
25
  require_relative 'chefspec/macros'
27
26
  require_relative 'chefspec/matchers'
28
27
  require_relative 'chefspec/renderer'
29
- require_relative 'chefspec/reporter'
30
28
  require_relative 'chefspec/rspec'
31
29
  require_relative 'chefspec/runner'
32
30
  require_relative 'chefspec/version'
@@ -2,21 +2,37 @@ require 'chef/resource'
2
2
 
3
3
  class Chef::Resource
4
4
  alias_method :old_initialize, :initialize
5
-
6
5
  def initialize(*args)
7
6
  @performed_actions = {}
8
7
  old_initialize(*args)
9
8
  end
10
9
 
10
+ alias_method :old_run_action, :run_action
11
+ def run_action(action, notification_type = nil, notifying_resource = nil)
12
+ resolve_notification_references
13
+ validate_action(action)
14
+
15
+ Chef::Log.info("Processing #{self} action #{action} (#{defined_at})")
16
+
17
+ unless should_skip?(action)
18
+ if node.runner.step_into?(self)
19
+ instance_eval { @not_if = []; @only_if = [] }
20
+ old_run_action(action, notification_type, notifying_resource)
21
+ end
22
+
23
+ if node.runner.compiling?
24
+ perform_action(action, compile_time: true)
25
+ else
26
+ perform_action(action, converge_time: true)
27
+ end
28
+ end
29
+ end
30
+
11
31
  def perform_action(action, options = {})
12
32
  @performed_actions[action.to_sym] ||= {}
13
33
  @performed_actions[action.to_sym].merge!(options)
14
34
  end
15
35
 
16
- def unperform_action(action)
17
- @performed_actions.delete(action.to_sym)
18
- end
19
-
20
36
  def performed_action(action)
21
37
  @performed_actions[action.to_sym]
22
38
  end
@@ -23,11 +23,11 @@ module ChefSpec::Matchers
23
23
  if @expected_content
24
24
  message << " with:"
25
25
  message << "\n\n"
26
- message << @expected_content
26
+ message << @expected_content.to_s
27
27
  message << "\n\n"
28
28
  message << "but got:"
29
29
  message << "\n\n"
30
- message << @actual_content
30
+ message << @actual_content.to_s
31
31
  message << "\n "
32
32
  end
33
33
  message
@@ -38,7 +38,7 @@ module ChefSpec::Matchers
38
38
  if @expected_content
39
39
  message << " with:"
40
40
  message << "\n\n"
41
- message << @expected_content
41
+ message << @expected_content.to_s
42
42
  message << "\n\n"
43
43
  end
44
44
  message << " to not be in Chef run"
@@ -75,7 +75,7 @@ module ChefSpec
75
75
  Chef::Config.formatters.clear
76
76
  Chef::Config.add_formatter('chefspec')
77
77
  Chef::Config[:cache_type] = 'Memory'
78
- Chef::Config[:event_handlers] = ChefSpec::Reporter.new
78
+ Chef::Config[:client_key] = nil
79
79
  Chef::Config[:cookbook_path] = Array(options[:cookbook_path])
80
80
  Chef::Config[:force_logger] = true
81
81
  Chef::Config[:solo] = true
@@ -115,6 +115,7 @@ module ChefSpec
115
115
  # Setup the run_context
116
116
  @run_context = Chef::RunContext.new(client.node, {}, client.events)
117
117
 
118
+ @converging = true
118
119
  @client.converge(@run_context)
119
120
  self
120
121
  end
@@ -148,6 +149,7 @@ module ChefSpec
148
149
  # Setup the run_context
149
150
  @run_context = client.setup_run_context
150
151
 
152
+ @converging = true
151
153
  @client.converge(@run_context)
152
154
  self
153
155
  end
@@ -221,12 +223,28 @@ module ChefSpec
221
223
  end
222
224
 
223
225
  #
224
- # The list of LWRPs to step into and evaluate.
226
+ # Boolean method to determine the current phase of the Chef run (compiling
227
+ # or converging)
225
228
  #
226
- # @return [Array<String>]
229
+ # @return [Boolean]
230
+ #
231
+ def compiling?
232
+ !@converging
233
+ end
234
+
235
+ #
236
+ # Determines if the runner should step into the given resource. The
237
+ # +step_into+ option takes a string, but this method coerces everything
238
+ # to symbols for safety.
239
+ #
240
+ # @param [Chef::Resource] resource
241
+ # the Chef resource to try and step in to
242
+ #
243
+ # @return [Boolean]
227
244
  #
228
- def step_into
229
- @step_into ||= Array(options[:step_into] || [])
245
+ def step_into?(resource)
246
+ key = resource.resource_name.to_sym
247
+ Array(options[:step_into]).map(&:to_sym).include?(key)
230
248
  end
231
249
 
232
250
  #
@@ -1,3 +1,3 @@
1
1
  module ChefSpec
2
- VERSION = '3.0.0.beta.3'
2
+ VERSION = '3.0.0.beta.4'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chefspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.beta.3
4
+ version: 3.0.0.beta.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Crump
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-10-17 00:00:00.000000000 Z
12
+ date: 2013-10-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: chef
@@ -171,7 +171,6 @@ files:
171
171
  - lib/chefspec/extensions/chef/conditional.rb
172
172
  - lib/chefspec/extensions/chef/data_query.rb
173
173
  - lib/chefspec/extensions/chef/lwrp_base.rb
174
- - lib/chefspec/extensions/chef/provider.rb
175
174
  - lib/chefspec/extensions/chef/resource.rb
176
175
  - lib/chefspec/extensions/chef/securable.rb
177
176
  - lib/chefspec/formatter.rb
@@ -183,7 +182,6 @@ files:
183
182
  - lib/chefspec/matchers/resource_matcher.rb
184
183
  - lib/chefspec/matchers.rb
185
184
  - lib/chefspec/renderer.rb
186
- - lib/chefspec/reporter.rb
187
185
  - lib/chefspec/rspec.rb
188
186
  - lib/chefspec/runner.rb
189
187
  - lib/chefspec/stubs/command_registry.rb
@@ -221,6 +219,6 @@ rubyforge_project:
221
219
  rubygems_version: 2.0.3
222
220
  signing_key:
223
221
  specification_version: 4
224
- summary: chefspec-3.0.0.beta.3
222
+ summary: chefspec-3.0.0.beta.4
225
223
  test_files: []
226
224
  has_rdoc:
@@ -1,20 +0,0 @@
1
- require 'chef/provider'
2
-
3
- class Chef::Provider
4
- alias_method :old_run_action, :run_action unless method_defined?(:old_run_action)
5
-
6
- def run_action(action = nil)
7
- Chef::Log.debug("Running action '#{action}' for #{self} (skipping because ChefSpec)")
8
- @new_resource.updated_by_last_action(true)
9
-
10
- if node.runner.step_into.include?(@new_resource.resource_name.to_s)
11
- Chef::Log.debug("Stepping into LWRP #{@new_resource.resource_name.to_s}")
12
-
13
- if whyrun_supported?
14
- Chef::Log.warn("#{self} does not support whyrun mode. This could be dangerous!")
15
- end
16
-
17
- old_run_action(action)
18
- end
19
- end
20
- end
@@ -1,51 +0,0 @@
1
- require 'chef/event_dispatch/base'
2
-
3
- module ChefSpec
4
- class Reporter < ::Chef::EventDispatch::Base
5
- #
6
- # Called when a resource is converged ({Chef::Resource#run_action}).
7
- # This appends the action to the resource's +performed_actions+ so that
8
- # ChefSpec can assert the resource received the proper message.
9
- #
10
- # @param [Chef::Resource] resource
11
- # the resource to report on
12
- # @param [Symbol] action
13
- # the action
14
- #
15
- def resource_action_start(resource, action, notification_type = nil, notifier = nil)
16
- if @converging
17
- resource.perform_action(action, converge_time: true)
18
- else
19
- resource.perform_action(action, compile_time: true)
20
- end
21
- end
22
-
23
- #
24
- # Called when a resource action is skipped (due to a resource guard
25
- # or +action :nothing+). This removes the given action from the list
26
- # of +performed_actions+ on the resource.
27
- #
28
- # @param [Chef::Resource] resource
29
- # the resource to report on
30
- # @param [Symbol] action
31
- # the action
32
- # @param [Chef::Resource::Conditional] conditional
33
- # the conditional that ran
34
- #
35
- def resource_skipped(resource, action, conditional)
36
- resource.unperform_action(action)
37
- end
38
-
39
- #
40
- # Called when we start convering. This method sets an instance variable
41
- # that other classes use to determine if a resource action was run during
42
- # compile time or converge time.
43
- #
44
- # @param [Chef::RunContext] run_context
45
- # the Chef run context
46
- #
47
- def converge_start(run_context)
48
- @converging = true
49
- end
50
- end
51
- end