chefspec 3.0.1 → 3.0.2

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