chefspec 3.0.1 → 3.0.2

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: 654732428da134b8c055847663deb22bad8e8102
4
- data.tar.gz: 44db5468f942a6d6b88b6734c62d6862bfd55e4d
3
+ metadata.gz: 5c8e999b2df276e377b7c7939430db34e9ba082b
4
+ data.tar.gz: 08c074ed6d9633de4e7ea9b83c0f3709c7c91704
5
5
  SHA512:
6
- metadata.gz: 7500f6cfa7ebc3e2e817cbeb4437a99ce93a20358b202d05d43c4cf16195ffd4928f01cba962d81b07feb60a317879c8fe6def6dd97b0b547ab440376f7b9f91
7
- data.tar.gz: df9c2a7b44bf179c9f95a21871f2dcfa60a1b5ca117283e5b0ee59114e9eec294a67f75114e923580aaec89c24e9db3c71eb0de235b8864e99e1e22b606a594f
6
+ metadata.gz: b7f58af30026df43e1c60515e1ba01e6d0dea37443878d3ea10bcec2e47aa4ea91e23c40db8ab8e2a5660255afd6fb6b559d98621bed48999d732bec641bfa2d
7
+ data.tar.gz: 1598aefcab47c574882ade3bb99a9f2a4241e26e0c86b791cdce0dabfc7a85a56a7383c148ec2e05568a8a585b865cd54aa69b8c0dac0894ff2998ade28c4701
@@ -0,0 +1,28 @@
1
+ module ChefSpec::API
2
+ # @since 3.1.0
3
+ module StateAttrsMatcher
4
+ #
5
+ # Assert that a Chef resource has certain state attributes (since Chef
6
+ # 11.8.0):
7
+ #
8
+ # state_attrs :time, :temperature
9
+ #
10
+ # @see https://github.com/opscode/chef/blob/e43d7ebda/lib/chef/resource/file.rb#L32-L37
11
+ #
12
+ # The Examples section demonstrates the different ways to test a
13
+ # resource's +state_attrs+ with ChefSpec.
14
+ #
15
+ # @example Assert the +lwrp+ resource has two state attributes
16
+ # expect(lwrp).to have_state_attrs(:time, :temperature)
17
+ #
18
+ #
19
+ # @param [Array] state_attrs
20
+ # the list of state attributes to assert
21
+ #
22
+ # @return [ChefSpec::Matchers::StateAttrsMatcher]
23
+ #
24
+ def have_state_attrs(*state_attrs)
25
+ ChefSpec::Matchers::StateAttrsMatcher.new(state_attrs)
26
+ end
27
+ end
28
+ end
data/lib/chefspec/api.rb CHANGED
@@ -68,6 +68,7 @@ require_relative 'api/script'
68
68
  require_relative 'api/service'
69
69
  require_relative 'api/smartos_package'
70
70
  require_relative 'api/solaris_package'
71
+ require_relative 'api/state_attrs'
71
72
  require_relative 'api/subversion'
72
73
  require_relative 'api/template'
73
74
  require_relative 'api/user'
@@ -0,0 +1,70 @@
1
+ module ChefSpec::Matchers
2
+ class StateAttrsMatcher
3
+ #
4
+ # Create a new state_attrs matcher.
5
+ #
6
+ # @param [Array] state_attrs
7
+ #
8
+ def initialize(state_attrs)
9
+ @expected_attrs = state_attrs.map(&:to_sym)
10
+ end
11
+
12
+ def matches?(resource)
13
+ @resource = resource
14
+ @resource && matches_state_attrs?
15
+ end
16
+
17
+ def description
18
+ %Q{have state attributes #{@expected_attrs.inspect}}
19
+ end
20
+
21
+ def failure_message_for_should
22
+ if @resource
23
+ "expected #{state_attrs.inspect} to equal #{@expected_attrs.inspect}"
24
+ else
25
+ "expected _something_ to have state attributes, but the " \
26
+ "_something_ you gave me was nil!" \
27
+ "\n" \
28
+ "Ensure the resource exists before making assertions:" \
29
+ "\n\n" \
30
+ " expect(resource).to be" \
31
+ "\n "
32
+ end
33
+ end
34
+
35
+ def failure_message_for_should_not
36
+ if @resource
37
+ "expected #{state_attrs.inspect} to not equal " \
38
+ "#{@expected_attrs.inspect}"
39
+ else
40
+ "expected _something_ to not have state attributes, but the " \
41
+ "_something_ you gave me was nil!" \
42
+ "\n" \
43
+ "Ensure the resource exists before making assertions:" \
44
+ "\n\n" \
45
+ " expect(resource).to be" \
46
+ "\n "
47
+ end
48
+ end
49
+
50
+ private
51
+ #
52
+ # Determine if all the expected state attributes are present on the
53
+ # given resource.
54
+ #
55
+ # @return [Boolean]
56
+ #
57
+ def matches_state_attrs?
58
+ @expected_attrs == state_attrs
59
+ end
60
+
61
+ #
62
+ # The list of state attributes declared on the given resource.
63
+ #
64
+ # @return [Array<Symbol>]
65
+ #
66
+ def state_attrs
67
+ @resource.class.state_attrs.map(&:to_sym)
68
+ end
69
+ end
70
+ end
@@ -5,5 +5,6 @@ module ChefSpec
5
5
  require_relative 'matchers/notifications_matcher'
6
6
  require_relative 'matchers/render_file_matcher'
7
7
  require_relative 'matchers/resource_matcher'
8
+ require_relative 'matchers/state_attrs_matcher'
8
9
  end
9
10
  end
@@ -239,13 +239,17 @@ module ChefSpec
239
239
  # +step_into+ option takes a string, but this method coerces everything
240
240
  # to symbols for safety.
241
241
  #
242
+ # This method also substitutes any dashes (+-+) with underscores (+_+),
243
+ # because that's what Chef does under the hood. (See GitHub issue #254
244
+ # for more background)
245
+ #
242
246
  # @param [Chef::Resource] resource
243
247
  # the Chef resource to try and step in to
244
248
  #
245
249
  # @return [Boolean]
246
250
  #
247
251
  def step_into?(resource)
248
- key = resource.resource_name.to_sym
252
+ key = resource.resource_name.to_s.gsub('-', '_').to_sym
249
253
  Array(options[:step_into]).map(&:to_sym).include?(key)
250
254
  end
251
255
 
@@ -1,3 +1,3 @@
1
1
  module ChefSpec
2
- VERSION = '3.0.1'
2
+ VERSION = '3.0.2'
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.1
4
+ version: 3.0.2
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-22 00:00:00.000000000 Z
12
+ date: 2013-11-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: chef
@@ -31,14 +31,14 @@ dependencies:
31
31
  requirements:
32
32
  - - ~>
33
33
  - !ruby/object:Gem::Version
34
- version: '1.1'
34
+ version: '2.0'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - ~>
40
40
  - !ruby/object:Gem::Version
41
- version: '1.1'
41
+ version: '2.0'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: rspec
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -158,6 +158,7 @@ files:
158
158
  - lib/chefspec/api/service.rb
159
159
  - lib/chefspec/api/smartos_package.rb
160
160
  - lib/chefspec/api/solaris_package.rb
161
+ - lib/chefspec/api/state_attrs.rb
161
162
  - lib/chefspec/api/subversion.rb
162
163
  - lib/chefspec/api/template.rb
163
164
  - lib/chefspec/api/user.rb
@@ -180,6 +181,7 @@ files:
180
181
  - lib/chefspec/matchers/notifications_matcher.rb
181
182
  - lib/chefspec/matchers/render_file_matcher.rb
182
183
  - lib/chefspec/matchers/resource_matcher.rb
184
+ - lib/chefspec/matchers/state_attrs_matcher.rb
183
185
  - lib/chefspec/matchers.rb
184
186
  - lib/chefspec/renderer.rb
185
187
  - lib/chefspec/rspec.rb
@@ -216,9 +218,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
216
218
  version: '0'
217
219
  requirements: []
218
220
  rubyforge_project:
219
- rubygems_version: 2.0.3
221
+ rubygems_version: 2.1.10
220
222
  signing_key:
221
223
  specification_version: 4
222
- summary: chefspec-3.0.1
224
+ summary: chefspec-3.0.2
223
225
  test_files: []
224
226
  has_rdoc: